Git标签管理
前面的话
当发布一个版本时,我们通常会先在版本库中放一个标签。这样,标签时的版本被唯一地确定。以后每当你拿一个贴了标签的版本,你都会拿出那个贴了标签的时刻的版本历史。因此,标签也是版本库的快照,本质上是一个指向提交的指针。因此,创建和删除标签是即时完成的。简而言之,tag是一个易于记忆的有意义的名称,它与commit绑定在一起。本文将详细介绍Git标签管理
创建标签
Git中的标注非常简单。首先,切换到需要标记的分支
然后,您可以通过键入命令git标签名称来键入新标签
您可以使用git标记命令查看所有标记
默认标签在最近一次提交时。有时候,我忘了贴标签怎么办?方法是找到历史提交的提交id,然后键入它
例如,要标记这个create b.txt提交,其对应的提交id是7ec9296,并键入以下命令:
然后使用git tag命令查看标签。请注意,标签不是按时间顺序列出的,而是按字母顺序排序的
您可以使用git显示标记名来查看标记信息
笔记标签
实际上,Git使用两种类型的标签:轻量级的和带注释的。上面的描述是轻量级标签,就像一个不会改变的分支。事实上,它是对特定提交对象的引用。注释标签实际上是存储在仓库中的独立对象,它有自己的校验和信息,包括标签名称、电子邮件地址和日期以及标签描述。标签本身也可以由GNU隐私保护(GPG)签署或验证。一般建议使用带备注的标签保存相关信息;当然,如果只是临时添加标签,或者不需要添加额外的信息,使用轻量级标签也没问题
创建带有注释类型的标签非常简单。您可以用-a(带注释的首字母,中文意思是注释)指定标签名称,而-m选项指定相应的标签描述,Git会将其一起保存在标签对象中。如果没有给出这个选项,Git会启动文本编辑软件,让你输入标签描述
$ git标签-a v1.4 -m '我的版本1.4 '
我们可以看到在提交的对象信息上,列出了这个标签的提交者和提交时间,以及对应的标签描述
在标签上签名
如果你有自己的私钥,也可以用GPG签标签,只需要把前面的-a改成-s(取signed的第一个字母,意思是中文签名)
$ git tag -s v0.2 -m '已发布签名版本0.2 '
签名是由PGP签名的,所以必须先安装gpg(GnuPG)。如果找不到gpg或没有gpg密钥对,将会报告错误
现在再次运行git show,您会看到相应的GPG签名也附加在上面
$ git show v 0.2 tag v 0.2 tag : Michael lio[email protected]date : Mon 8月26日07:28:33 2013 0800signed版本0.2已发布-BEGIN PGP SIGNATURE-version : GnuPG v 1 . 4 . 12(Darwin)iqecbaababagabqjsgpmhaaojebuxhydbpt4 qqiakehf3po.-END PGP SIGNATURE-commit FEC 145 accd 63 dc9ed 95 a2 f 557 ea 0658 a2 a 6537 fauthor : Michael Liao[电子邮件受保护]日期: thu aug 22 10:37336030 2013 0800分支测试PGP签名的标签不能伪造,因为它可以验证PGP签名。
您可以使用git tag-v[标记名](取verify的第一个字母,中文意思是verify)来验证签名的标记。该命令将调用GPG来验证签名,因此您需要有签名者的公钥并将其存储在密钥环中来验证它
$ git tag-v v 1 . 4 . 2 . 1 object 883653 babd 8 e7ea 23 E6 a5c 392 bb 739348 B1 EB 61 type commit ag v 1 . 4 . 2 . 1 tager Junio C Hamano[email protected]1158138501-0700 git 1 . 4 . 2 . 1自1 . 2以来的修复,包括git-mv和git-http及其替代版本。gpg 3360签名于2023年9月13日星期三制作
Gpg:签名被湿sep13 02:08:25 2006 PDT使用DSA密钥id f3119b9apg:无法检查签名:未找到公钥错误:无法验证标记“v1.4.2.1”
如果标签错误,也可以删除
$ git标记名-d
因为创建的标签只存储在本地,所以不会自动推送到远程。因此,错误的标签可以在本地安全删除。
默认情况下,git push不会将标签发送到远程服务器,只有通过显式命令才能将标签推送到远程仓库
$ git推原点标记名
或者,一次性将所有尚未推送至远程位置的本地标签推送出去
$ git推送原点标签
如果标签已经推送到远程,删除远程标签有点麻烦,先在本地删除
然后,远程删除。delete命令也是push,但是格式如下
最后,如何查看发送到远程的标签?
单击Github项目中的发布
您可以看到远程标签的信息
以上就是本文的全部内容。希望本文的内容能给大家的学习或工作带来一些帮助,也希望多多支持我们!