Skip to content

tag

介绍

如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。 所以,标签也是版本库的一个快照。

Git 的标签虽然是版本库的快照,但其实它就是指向某个 commit 的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

Git有commit,为什么还要引入tag? "请把上周一的那个版本打包发布,commit号是6a5819e…" "一串乱七八糟的数字不好找!" 如果换一个办法: "请把上周一的那个版本打包发布,版本号是v1.2" "好的,按照tag v1.2查找commit就行!"

所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。

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

标签分类

轻量级的(lightweight)

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

如果只是临时性加注标签,或者不需要旁注额外信息,用轻量级标签也没问题。

例子:git tag v1.0

含附注的(annotated)

而含附注标签,实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。

一般我们都建议使用含附注型的标签,以便保留相关信息;

例子:git tag -a v1.0 (必须写注解)

命令

功能命令
查看所有标签git tag
创建轻量级标签git tag [tag name]
创建含附注的标签(打开文本编辑器写注解)git tag -a [tag name]
创建含附注的标签并直接加注解git tag -a [tag name] -m [message]
删除标签[tag name]git tag -d [tag name]
查看此标签(此版本)修改的内容和tag附注git show [tag name]
为已经发布的提交追加标签git tag -a [tag name] [commit号]

请勿转载