Git有趣的功能之一肯定是对标签进行签名的能力。 使用GPG密钥对,您可以创建签名标签。 拥有公共密钥的任何人都可以验证您是该标签的真实创建者。
为什么要签署标签
由于Git是分布式版本控制系统(DVCS),因此您需要一个来验证发行版的来源。 就像您验证下载的版本的校验和以确保它是您期望的版本一样(您确实要验证下载的内容,对吗?!),您想证明标记是由预期的受信任源创建的。
尽管在开放源代码项目中对标签进行签名更为重要,但对您的私有项目而言,签名通常也是一个好主意。 当他们发布软件版本时,将签名视为在团队中放置戳记的核心团队成员之一。
另外,对标签进行签名非常简单,接下来我将向您展示。
创建签名标签
要创建一个签名标签,您需要的是一个Git存储库和您要用来对标签进行签名的GPG私钥。 如果您尚未设置GPG,请不要担心,我稍后再介绍。
为了使事情变得简单,将您的GPG签名密钥设置为全局配置设置。 显然,您不需要这样做-特别是如果您拥有多个帐户(例如,工作帐户和私人帐户),则需要多个签名密钥,因此请在每个存储库中设置它们(放弃全局选项)。
$ git config --global user.signingkey [gpg-key-id]
现在,您需要做的就是创建一个标签并对其进行签名。
$ git tag --sign [signed-tag-name]
验证标签
验证标签就像创建标签一样容易。
$ git tag --verify [signed-tag-name]
但是,您需要签名者的公共密钥才能验证提交。 大多数维护者将其公共密钥放在存储库中的一个特殊对象中,该对象只能从特定标签(或者当然是其自己的SHA)访问。
您可以按以下步骤在标签中提供公共密钥。
$ gpg -a --export [gpg-key-id] | git hash-object -w --stdin
[object SHA]
$ git tag -a [object SHA] maintainer-pgp-pub
要将维护者的公钥导入密钥环,可以显示标签。
$ git show maintainer-pgp-pub | gpg --import
通常,最好还是留下有关导入公共密钥和验证标签消息中的标签的说明。
创建一个GPG密钥
如果您没有GPG密钥对,那么该创建密钥对了。 如果您不确定,则可能没有,但是检查GPG密钥列表始终是一个好主意。
$ gpg --list-keys
如果需要,请生成密钥。 如果可以,请选择RSA算法,因为DSA仅支持多达1024位。
$ gpg --gen-key
如您所见,使用GPG和对Git标签进行签名非常简单,因此实际上没有理由不对您的标签进行签名。
所以去签名并验证!
翻译自: https://www.javacodegeeks.com/2013/10/signing-git-tags.html