发布版本时,一般会先在版本库中打一个标签,这样,就惟一肯定了打标签时刻的版本。取出某个标签的版本,就是把那个打标签的时刻的历史版本取出来。因此,标签也是版本库的一个快照。git
Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支雷同,但分支能够移动,标签不可);建立和删除标签都是瞬间完成的。
github
本文具体说明 Git 中是如何建立标签及操做标签的。安全
Git 标签的命令很简单,首先简单浏览下方的 Git 命令:学习
git tag 查看标签 spa
git tag <tag name> <commit id> 建立标签,若无commit id 默认当前
指针
git tag -a <tag name> -m <msg> 建立标签,且添加标签信息code
git show <tag name> 查看标签具体信息blog
可作一些简单的实践操做,未建立过标签直接用 git tag 显示为空; 排序
在master分支上建立一个 v1.0 的标签,以后查看,以下开发
打标签就是如此容易
默认标签是打在最新提交的commit上的(当前分支快照)。有时候,若是忘了打标签须要补打,须要找到历史提交的commit id,而后打上就能够了。
咱们来操做下其余分支下打标签,切换至dev分支(若无,可新建该分支),若在该分支下开发出 v1.1版本,须打v1.1标签,可操做 git tag v1.1
再次查看标签,可看到目前有两个标签了
切换至master分支,再次查看,可见 也有两个标签;标签是记录在整个Git库的,分支并不影响。
咱们在master分支上 commit 两次,并打当前分支为 v2.0, 目前有三个标签了
然而如今,突然想起以前有次commit须要打上 v1.2 的标签,得补打标签,那如何操做呢?得知道以前那次提交的commit id, git log 以下
得知 commitid , 取前7位便可 ffe7d78
注意,标签不是按时间顺序列出,而是按字母排序的。(v2.0标签就是打在v1.2以前的)
注意,标签不能重复打,若已存在,会提示 ,但容许同一commit id打多个标签
查看标签内容,如 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> 删除远程标签