Git远程07:远程标签

标签的创建

1
$ git tag v0.1

在当前的HEAD创建标签v0.1。
也可以根据在某次提交上创建分支。

1
$ git tag v0.2 -m "version 0.2" 6944954

在编号为6944954的commit上创建标签v0.2,信息为version 0.2。

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

推送提交以及标签

连同标签一起推送。

1
$ git push origin master --tags

或者仅仅推送标签。

1
$ git push --tags

标签的更新

执行git fetch会获取所有的提交以及标签的更新。
仅仅获取标签的更新。

1
$ git fetch origin  --tags

查看远程仓库的标签

1
2
3
4
5
$ git ls-remote --tags
From git@github0123:jeremy0123/fetch.git
30f4e5cdfef2539b5e156a607f365fb457f309a4 refs/tags/v0.1
0efbfd03ed4b09647ef8a32db9c0a075f7d7dbeb refs/tags/v0.2
6944954ffa18df994365e53e96d3826a3953890b refs/tags/v0.2^{}

注意refs/tags/v0.2^{}表示v0.2是含附注的标签。
另外,参数--tags可以简化为-t--heads会获取远程仓库的分支信息。如果没有任何参数,将获取所有的分支和标签信息。

删除远程标签

1
$ git push origin --delete tag v0.1


1
$ git push origin :refs/tags/v0.1

远程仓库的标签删除后,本地仓库无法通过命令获取到删除的信息,只能通过git ls-remote获取到远程仓库的标签,与本地仓库的标签比对,手动执行git tag -d [标签名]进行删除。

如果本文对你有所帮助,请小额赞助
~~ EOF ~~