Git 使用的标签有两种类型:

  • 轻量级的(lightweight)标签:

轻量级标签就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用。

  • 含附注的(annotated)标签:

含附注标签,实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。一般我们都建议使用含附注型的标签,以便保留相关信息;当然,如果只是临时性加注标签,或者不需要旁注额外信息,用轻量级标签也没问题。

列显已有的标签

1
$ git tag

以Git自身项目仓库为例,如果你只对Git仓库的某个系列(例如1.4.2系列)的版本感兴趣,可以运行下列的命令:

1
$ git tag -l 'v1.4.2.*'

新建标签

  • 创建轻量级标签

1
$ git tag v1.4

  • 创建含附注标签

创建一个含附注类型的标签非常简单,用 -a (译注:取 annotated 的首字母)指定标签名字即可:

1
$ git tag -a v1.4 -m 'my version 1.4'

可以使用 git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象。

我们可以看到在提交对象信息上面,列出了此标签的提交者和提交时间,以及相应的标签说明。

签署标签

如果你有自己的私钥,还可以用 GPG 来签署标签,只需要把之前的 -a 改为 -s (译注:取 signed 的首字母)即可:

1
$ git tag -s v1.5 -m 'my signed 1.5 tag'

验证标签

可以使用 git tag -v [tag-name] (译注:取 verify 的首字母)的方式验证已经签署的标签。此命令会调用 GPG 来验证签名,所以你 需要有签署者的公钥 ,存放在 keyring 中,才能验证:

1
$ git tag -v v1.4.2.1

后期加注标签

你甚至可以在后期对早先的某次提交加注标签。只要在打标签的时候跟上对应提交对象的校验和(或前几位字符)即可:

1
$ git tag -a v1.2 9fceb02

提交标签

默认情况下, git push 并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库。其命令格式如同推送分支,运行 git push origin [tagname] 即可:

1
$ git push origin --tags