Git tag命令的使用

同大多数版本控制一样,Git同样可以对某一时间点上的版本打上标签。人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做。

查看标签

  • 列表所有标签

    1
    git tag
  • 列出版本为1开头的标签

    1
    git tag -l "1.*"

新建标签

Git使用的标签有两种类型:轻量级的标签(lightweight)和含附注的标签(annotated)轻量级标签就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用。而含附注标签,实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身也允许使用GNU Privacy Guard (GPG)来签署或验证。一般建议使用含附注型的标签,以便保留相关信息;当然,如果只是临时性加注标签,或者不需要旁注额外信息,用轻量级标签也是可以的。

1.含附注的标签

创建一个含附注类型的标签非常简单,用-a(译注:取annotated的首字母)指定标签名字即可,-m选项则指定了对应的标签说明。若没有-m参数,Git会启用编辑器让你输入标签说明。

1
git tag -a 1.0 -m "tag 1.0"

2.轻量级标签

轻量级标签实际上就是一个保存着对应提交对象的校验和信息的文件。要创建这样的标签,一个-a,-s 或-m选项都不用,直接给出标签名字即可:

1
git tag 1.0

签署标签

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

1
git tag -s 1.0 -m "signed tag 1.0"

运行git show会看到对应的GPG签名也附在其内

验证标签

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

1
git tag -v 1.0

对于未签署的标签进行验证,会报错。

后期加注标签

如果你昨天提交的代码,忘记打标签的话,没关系,Git允许你对之前的提交加注标签,你需要像下面这样,找到要加标签的commit id,然而只需要前几位就可以:

1
2
3
4
5
6
7
git log --pretty=oneline --abbrev-commit
...
5e00146 fix README.md
6ba7280 修改描述
1902d5c feat(examples/atom.php): 新增使用demo
79171e3 Initialization project
38100a1 Initial commit

比如说要对,上面的“新增使用demo”那次提交加注标签,它对应的commit id是1902d5c,执行如下:

1
git tag -a 1.0 -m "tag 1.0" 1902d5c

推送和删除远程标签

  • 推送远程标签

    1
    git push origin [tag-name]
  • 删除远程标签

    1
    git push origin :refs/tags/[tag-name]