Git 可以对某一时间点上的版本打上标签。在做版本发布的时候经常这么做。Git 使用的标签有两种类型: 轻量级的(lightweight)含附注的(annotated)

  • 轻量级标签:就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用。
  • 含附注标签:实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。

总结的说就是轻量级标签是一个引用,附注标签是一个独立的对象。一般建议使用附注标签,以保留相关详细信息。

常用命令:

列出所有标签:

git tag

新建附注标签:

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

默认在当前 HEAD 上打标签,如果想对指定的提交(commit)打标签:

git tag -a v1.4 -m 'my version 1.4' <commit>

新建轻量级标签:

git tag v1.4-lw

查看标签对应的信息:

git show v1.4

提交标签到远程仓库:

git push origin v1.4

一次提交本地的所有标签:

git push origin --tags

获取远程标签:

git fetch origin tag <tagname>

删除本地的标签:

git tag -d v0.9

删除远程分支有三种方式:

  • 1. 使用参数 --delete:

git push origin --delete tag <tagname>

  • 2. 相当于推送一个空分支到远程分支:

git push origin :<tagname>

  • 3. 先删除本地 tag,在推送一个空的 tag 到远程仓库:

git tag -d

git push origin :refs/tags/<tagname>

参考: