Git之(六)标签管理

来源:互联网 发布:linux ldconfig 编辑:程序博客网 时间:2024/05/21 12:50

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


新建标签

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

创建一个含附注类型的标签非常简单,用 -a (取 annotated 的首字母)指定标签名字即可:

git tag -a v1.1 -m 'My version 1.1'

而 -m 选项则指定了对应的标签说明,Git 会将此说明一同保存在标签对象中。如果没有给出该选项,Git 会启动文本编辑软件供你输入标签说明。

轻量级标签实际上就是一个保存着对应提交对象的校验和信息的文件。要创建这样的标签,一个 -a,-s 或 -m 选项都不用,直接给出标签名字即可:

git tag v1.1

Git还支持对早先的某次提交加注标签。比如在下面展示的提交历史中,只要在打标签的时候跟上对应提交对象的校验和(或前几位字符)即可:

git tag -a v1.2 9fceb02

查看标签

列出现有标签的命令非常简单,直接运行:

git tag

显示的标签只是按字母顺序排列,并不表示重要程度的高低。

我们可以用特定的搜索模式列出符合条件的标签。在 Git 自身项目仓库中,有着超过 240 个标签,如果只对 1.4.2 系列的版本感兴趣,可以运行下面的命令:

git tag -l 'v1.4.2.*'v1.4.2.1v1.4.2.2v1.4.2.3v1.4.2.4…

可以使用 git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象。

git show v1.1 tag v1.1Tagger: chenlongfei <chenlongfei@163.com>Date:   Mon Jul18 10:07:21 2016 +0800My version 1.1commit 91c233e97a5a88218b93bf1b57b9383377153587Author: chenlongfei <chenlongfei@163.com>Date:   Fri Jul15 17:14:50 2016 +0800…

如果有自己的私钥,还可以用GPG 来签署标签,只需要把之前的 -a 改为 -s (取signed 的首字母)即可。


推送标签

默认情况下,git push 并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库。其命令格式如同推送分支,运行git push origin [tagname] 即可:

git push origin v1.5

如果要一次推送所有本地新增的标签上去,可以使用“--tags”选项。


删除标签

在本地删除标签很简单,加上“-d”参数:

git tag -d v0.1

如果标签已经推送到远程仓库,就要复杂一点,首先用上面的命令在本地删除,然后,将该操作cimmit之后push到远程仓库,push命令的格式如下:

git push origin :refs/tags/v1.1

与删除远程分支的语法类似。冒号前实际上是一个空对象,代表用一个空对象取代远程仓库的v1.1标签,其实就是删除操作。


1 0