Git支持使用GPG签署提交,GitHub将这些提交显示为“已验证”。当您点击已验证的标记时,您会看到如下内容:
此提交已使用经过验证的签名进行签名。
我的用户名
我的名字
GPG密钥ID:
F66DEF7BA82E8647
合并拉取请求时,或者,当您在Web界面中进行提交时,它也显示为已验证,但使用不同的消息:
此提交是在GitHub.com上创建的,并使用GitHub密钥以经过验证的签名进行签名。
GPG密钥ID:4AEE18F83AFDEB23
当我运行git log --show-signature
时,它会显示我已在本地签名的提交,如下所示:
gpg: Signature made 01/25/18 11:52:25 W. Europe Standard Time^M
gpg: using RSA key 3FA85DEE7B64EB7EC8F97F41F66DEF7BA82E8647^M
gpg: Good signature from "Dude" <somebody@email.com>" [ultimate]^M
到目前为止,这么好。但是,当我遇到合并拉取请求时,我会得到以下内容:
gpg: Signature made 01/25/18 09:07:45 W. Europe Standard Time^M
gpg: using RSA key 4AEE18F83AFDEB23^M
gpg: Can't check signature: No public key^M
显然这是因为我没有将公钥添加到我的GPG密钥列表中。问题是:我在哪里可以找到这个密钥?它是否列在某处?
编辑:显然我已经尝试过谷歌搜索,甚至在GitHub的社区论坛上提问,但是没有得到答案。
答案 0 :(得分:0)
根据GPG的性质,您要确定要导入的密钥以及要签名的密钥。您可以在此处找到GitHub的Web流GPG公钥:
https://github.com/web-flow.gpg
如果要导入公共密钥,可以使用以下命令进行导入:
curl https://github.com/web-flow.gpg | gpg --import
作为GPG的用户,您应该评估您对该密钥源的信任程度。如果您确定它确实确实属于GitHub,则可以对其进行签名,还可以选择将您的签名发布到密钥服务器,实质上是公开承认您认为该密钥属于它应该属于的人。
答案 1 :(得分:-1)
GitHub有关于如何查找现有密钥,创建新密钥,将它们添加到git,GitHub等的文档。您可以找到here,我认为它可以回答您在此处遇到的任何问题。
来自:https://help.github.com/articles/about-gpg/
GitHub将使用GitHub Web界面自动签署您的提交。这些提交将在GitHub上具有经过验证的状态。您可以使用https://github.com/web-flow.gpg
中提供的公钥在本地验证签名