0%

Git标签tag相关操作

如何打标签

标签tag主要是在完成了一个版本后,用于发布该版本。

相关的命令如下:

列出标签

1
2
$ git tag              # 打印出当前仓库的所有标签
$ git tag -l '1.0.*' # 搜索符合模式的标签

创建标签

git标签有两种类型:轻量标签附注标签,创建的方法如下所示:

1
2
$ git tag v1.0-light                 # 创建轻量标签,只有一个引用
$ git tag -a v1.0 -m 'Release 1.0' # 创建附注标签,是个独立对象

一般创建都建议是附注标签(虽然轻量标签没有很多参数),搞个引用没有多大意思。

创建附注标签时,参数aannotated的缩写,指定标签类型,后附标签名。参数m指定标签说明,说明信息会保存在标签对象中。

可以通过git show v1.0来看到标签信息和与之对应的提交信息。

补打标签

打标签不必要在head之上,也可在之前的版本上打,这需要你知道某个提交对象的校验和(通过git log获取)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ git log --pretty=oneline

15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function
4682c3261057305bdd616e23b64b0857d832627b added a todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme

# 如果此时希望在updated rankfile补打标签,可以通过
# git tag -a v0.1.1 校验和
$ git tag -a v0.1.1 9fceb02

签署标签

如果你有自己的私钥,可以使用GPG来签署标签,只要把-a改为-s即可,也就是signed的意思。

1
$ git tag -s v0.1.1 校验和

验证标签

可以使用

1
$ git tag -v [tag-name]

的方式来验证已经签署的标签,其中v的意思为verify,
此命令会调用GPG来验证签名,所以需要有签署者的公钥,存放在keyring中,才能验证。

后期加注标签

如果对早前的那一次提交忘记加注标签了,那么可以使用git log --pretty=oneline来查看提交的HASH ID,然后使用

git tag -a v1.1 HASH-ID

即可补上标签。

切换标签

切换标签与切换分支命令一样,是用checkout即可,比如:

1
$ git checkout v1.0.0    # 注意前提是版本存在,可以是用git tag先检查一下

删除标签

不需要或者误操作提交一个标签的时候,删除即可,使用的是delete的缩写

1
$ git tag -d v1.1.1

删除远程tag这么用:

1
2
3
$ git push origin --delete tagname
# 或者
$ git push origin :refs/tags/tagname

查看标签信息

用git show命令可以查看标签的版本信息:

1
$ git show v0.1.2

标签发布

一般情况下,git push 不会将tag提交到服务端,我们需要显式的操作,如下所示:

1
2
3
$ git push origin [tag-name]
$ git push origin v1.1.1 #发布版本v1.1.1
$ git push origin -tags #一次发布所有的tag版本

查看某个标签

1
2
3
$ git  tag   		#查看当前分支下的标签
$ git checkout v0.21 #此时会指向打v0.21标签时的代码状态,(但现在处于一个空的分支上)
$ cat test.txt #查看某个文件
处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道