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号] |