读书人

【Git 学习札记】2.6 - 打标签

发布时间: 2012-09-23 10:28:11 作者: rapoo

【Git 学习笔记】2.6 - 打标签

同大多数 VCS 一样,Git 也可以对某一时间点上的版本打上标签。人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做。本节我们一起来学习如何列出所有可用的标签,如何新建标签,以及各种不同类型标签之间的差别。

列显已有的标签列出现有标签的命令非常简单,直接运行 git tag 即可:

$ git tagv0.1v1.3
显示的标签按字母顺序排列,所以标签的先后并不表示重要程度的轻重。

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

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

$ git tag -a v1.4 -m 'my version 1.4'$ git tagv0.1v1.3v1.4
-m 选项则指定了对应的标签说明,Git 会将此说明一同保存在标签对象中。如果在此选项后没有给出具体的说明内容,Git 会启动文本编辑软件供你输入。

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

$ git show v1.4tag v1.4Tagger: Scott Chacon <schacon@gee-mail.com>Date:   Mon Feb 9 14:45:11 2009 -0800my version 1.4commit 15027957951b64cf874c3557a0f3547bd83b3ff6Merge: 4a447f7... a6b4c97...Author: Scott Chacon <schacon@gee-mail.com>Date:   Sun Feb 8 19:02:46 2009 -0800    Merge branch 'experiment'
我们可以看到在提交对象信息上面,列出了此标签的提交者和提交时间,以及相应的标签说明。

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

$ git tag -s v1.5 -m 'my signed 1.5 tag'You need a passphrase to unlock the secret key foruser: "Scott Chacon <schacon@gee-mail.com>"1024-bit DSA key, ID F721C45A, created 2009-02-09
现在再运行 git show 会看到对应的 GPG 签名也附在其内:

$ git show v1.5tag v1.5Tagger: Scott Chacon <schacon@gee-mail.com>Date:   Mon Feb 9 15:22:20 2009 -0800my signed 1.5 tag-----BEGIN PGP SIGNATURE-----Version: GnuPG v1.4.8 (Darwin)iEYEABECAAYFAkmQurIACgkQON3DxfchxFr5cACeIMN+ZxLKggJQf0QYiQBwgySNKi0An2JeAVUCAiJ7Ox6ZEtK+NvZAj82/=WryJ-----END PGP SIGNATURE-----commit 15027957951b64cf874c3557a0f3547bd83b3ff6Merge: 4a447f7... a6b4c97...Author: Scott Chacon <schacon@gee-mail.com>Date:   Sun Feb 8 19:02:46 2009 -0800    Merge branch 'experiment'
稍后我们再学习如何验证已经签署的标签。

读书人网 >软件开发

热点推荐