Git中tag标签的使用教程
作者:農碼一生 发布时间:2022-06-26 08:15:00
标签:Git,tag,标签,使用,教程
一、tag简介
tag是git版本库的一个标记,指向某个commit的指针。
tag主要用于发布版本的管理,一个版本发布之后,我们可以为git打上 v.1.0.1 ,v.1.0.2 …这样的标签。
tag感觉跟branch有点相似,但是本质上和分工上是不同:
tag对应某次commit,是一个点,是不可移动的。
branch 对应一系列commit,是很多点连成的一根线,有一个HEAD 指针,是可以依靠 HEAD 指针移动的。
所以,两者的区别决定了使用方式,改动代码用 branch ,不改动只查看用 tag。
tag 和 branch 的相互配合使用,有时候起到非常方便的效果,例如:已经发布了 v1.0 v2.0 v3.0 三个版本,这个时候,我突然想不改现有代码的前提下,在 v2.0 的基础上加个新功能,作为 v4.0 发布。就可以检出 v2.0 的代码作为一个 branch ,然后作为开发分支。
二、tag使用命令
1、列出所有tag
git tag //默认显示
git tag -l
git tag -n //查看所有tag和说明
git tag -l v1.* //查看匹配到的tag
git ls-remote --tags origin //查看远程所有tag
2、查看tag信息
git show v1.0.1 //查看v1.0.1的内容
3、创建tag
git tag v2.0
git push origin //远程tag的创建
4、创建带注释tag
git tag -a v2.1 -m '第二版本' ////-m 后跟的是注释信息, 当使用git show v2.1的时候, 会显示这个注释信息
git push origin //远程tag的创建
5、推送tag
git push origin [tagname] //推送到远程仓库
git push origin --tags //推送所有tag到远程仓库
6、特定commit_id创建tag
git log --pretty=oneline //查看当前分支的提交历史 里面包含 commit_id
git tag -a
7、删除tag
git tag -d //方式一
git tag -d [tagname] //方式二
git push origin :refs/tags/v1.0.2 //方式一:远程tag的删除
git push origin --delete <tagname> //方式二:远程tag的删除
8、检出tag
git checkout -b
//因为 tag 本身指向的就是一个 commit,所以和根据commit id 检出分支是一个道理。
//但是需要特别说明的是,如果我们想要修改 tag检出代码分支,那么虽然分支中的代码改变了,但是 tag标记的 commit还是同一个,标记的代码是不会变的,这个要格外的注意
git checkout -b branch_name tag_name //新建分支检出
//注意不要在检出标签后做修改和提交,会出现不必要的麻烦。正确的做法应该是创建一个新的分支,在新的分支上做修改和提交。
9、切换tag
git checkout [tagname] //切换到指定tag
10、为之前提交的添加tag
git log --pretty=oneline --abbrev-commit //第一步:找到提记录
git tag -a v3.1 [指定标签名] [commitID] //第二步:为记录创建tag
//git tag -a "v1.0.2" 9fbc3d0
11、重命名tag
//1.强制替换,再删除原有
git tag -f <new-tag> <old-tag>
git tag -d <old-tag>
//2.删除原有tag,重新添加
git tag -d <old-tag>
git tag -a <new-tag> -m"information"
来源:https://www.cnblogs.com/wml-it/p/15588730.html
0
投稿
猜你喜欢
- cron 简介在 Unix-like 操作系统中,有一个大家都很熟悉的 cli 工具,它能够来处理定时任务,周期性任务,这就是:
- 前言相信大家都玩过斗地主,规则就不再介绍了。直接上一张朋友圈看到的残局图:这道题我刚看到时,曾尝试用手工来破解,每次都以为找到了农民的必胜策
- 分组:根据研究目的,将所有样本点按照一个或多个属性划分为多个组,就是分组。pandas中,数据表就是DataFrame对象,分组就是grou
- Ruby 是一门通用的语言,不仅仅是一门应用于WEB开发的语言,但 Ruby 在WEB应用及WEB工具中的开发是最常见的。使用Ruby您不仅
- 安装方法: regsvr32 parmf.dll附 如果想取消注册可以:regsvr32 /u&nb
- 本文实例讲述了Python实现的递归神经网络。分享给大家供大家参考,具体如下:# Recurrent Neural Networksimpo
- 这是一个给新手学习代码的帖子,包含以下内容:如何使用UBB代码,如何用js与剪贴板交互,如何使用textRange对象,如何使用自定义的快捷
- 由于办公需要“每天定时推送某消息用来提醒群里面所有人”,有同事提议用企业微信自带的机器人来实现此功能。我觉得企业微信的这个工具还不错,具体使
- 我和朋友对此的看法有分歧,我明明记得有不需要返回的时候的?你的看法是对的,例如在表中删除记录。我们来看看下面的例子——在Employee表中
- 框架特色:一、统一命名空间 默认命名空间为F,当然你也可以改成自己喜欢的名字,整个框架
- 本文实例讲述了PHP完全二叉树定义与实现方法。分享给大家供大家参考,具体如下:若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1)
- Tensorflow内置了许多数据集,但是实际自己应用的时候还是需要使用自己的数据集,这里TensorFlow 官网也给介绍文档,官方文档。
- 框架整体使用Python3+Requests+Excel:包含对实时token的获取1、------base-------runmethon
- 在Python中,装饰器一般用来修饰函数,实现公共功能,达到代码复用的目的。在函数定义前加上@xxxx,然后函数就注入了某些行为,很神奇!然
- 先以一个大牛的一段关于Python Metapgramming的著名的话来做开头:Metaclasses are deeper magic
- 1、os.name---判断现在正在实用的平台,Windows返回'nt';linux返回'posix'2、
- 前言本人因为比较喜欢看漫画和动漫, 所以总会遇到一些问题, 因为订阅的漫画或者动漫太多, 总会忘记自己看到那一章节或者不知道什么时候更新.
- 在进行特征工程、划分数据集的工作中,drop()函数都能派上用场。它可以轻松剔除数据、操作列和操作行等。drop()详细的语法如下:删除行是
- 你是否对获得MySQL数据库与表的最基本命令的实际操作感到十分头疼?如果是这样子的话,以下的文章将会给你相应的解决方案,以下的文
- 只要为pycharm配置anaconda中的解析器即可。操作步骤:1. 在pycharm菜单栏中,点击File-Settings-Proje