Git 学习(七)标签管理
发布版本时,通常会先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。取出某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支雷同,但分支可以移动,标签不可);创建和删除标签都是瞬间完成的。
本文具体说明 Git 中是如何创建标签及操作标签的。
创建标签
Git 标签的命令很简单,首先简单浏览下方的 Git 命令:
git tag 查看标签
git tag <tag name> <commit id> 创建标签,若无commit id 默认当前
git tag -a <tag name> -m <msg> 创建标签,且添加标签信息
git show <tag name> 查看标签具体信息
可做一些简单的实践操作,未创建过标签直接用 git tag 显示为空;
在master分支上创建一个 v1.0 的标签,之后查看,如下
默认标签是打在最新提交的commit上的(当前分支快照)。有时候,如果忘了打标签需要补打,需要找到历史提交的commit id,然后打上就可以了。
我们来操作下其他分支下打标签,切换至dev分支(若无,可新建该分支),若在该分支下开发出 v1.1版本,须打v1.1标签,可操作 git tag v1.1
切换至master分支,再次查看,可见
我们在master分支上 commit 两次,并打当前分支为 v2.0,
然而现在,忽然想起之前有次commit需要打上 v1.2 的标签,得补打标签,那如何操作呢?得知道之前那次提交的commit id, git log 如下
得知 commitid
注意,标签不能重复打,若已存在,会提示
查看标签内容,如 git show v1.1 , 可见如下,可得知该标签的commit id及与当前版本的差异
创建标签时,可添加备注信息即如
可用 -s 表示用PGP签名标签,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错;有关签名方式请自行搜索研究。
git tag -s <tag name> -m <msg> 创建签名标签,且添加标签信息
删除标签
标签若是打错可以直接删除,命令如下:
git tag -d <tag name> -m <msg> 删除标签
如删除 v1.2 标签
创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。有关远程标签详见下文。
远程标签
正如前文所言,本地的标签不会推送到远程。来看下远程的标签显示,如下 github, 目前该库无任何tags
如果要推送标签到远程,使用命令如下:
git push origin <tag name> 推送某个标签至远程
git push origin --tags 推送所有标签至远程
本地库有三个标签
如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除;再从远程删除。删除命令也是push,但是格式如下:
git push origin :refs/tags/<tagname> 删除远程标签