通过设置 gpg 密钥,我从本地仓库获得了 git 提交,以在 github 上显示“已验证”。
但是为什么我的 github 提交(当我在 github 上时)没有显示为“已验证”?它什么也没显示,表明 github 将它们视为未经验证的提交。这是预期的还是我需要在 github 上配置一些东西?
谢谢。
通过设置 gpg 密钥,我从本地仓库获得了 git 提交,以在 github 上显示“已验证”。
但是为什么我的 github 提交(当我在 github 上时)没有显示为“已验证”?它什么也没显示,表明 github 将它们视为未经验证的提交。这是预期的还是我需要在 github 上配置一些东西?
谢谢。
在 2020 年秋季的某个时候,可能在 10 月 1 日至 20 日之间,GitHub 改变了他们处理 GPG 密钥提交验证 rebase 的方式,其中仅COMMITTER_DATE
更改了 git。
所以这是我非常正常的用例流程:
git rebase --committer-date-is-author-date <HASH>
,它将 GitHub 文件修改日期重置为提交的日期时间,而不是今天/现在。在 10 月 20 日之前,我在 8 年多的时间里执行这些步骤从未遇到过问题。
现在,突然之间,GitHub 将所有在这个 rebase 中的提交显示为未经验证:
您可以在https://github.com/hopeseekr/BashScripts/commits/fucked_up_gpg_verifications亲自查看
报错了吗?“没有用户与提交者电子邮件相关联。”,这显然是荒谬的,因为所有提交共享相同的电子邮件地址,并且它是帐户上的主要地址。
不完全是。如果您在 GitHub.com web 上提交某些内容(例如,通过单击铅笔图标编辑 README.md 文件,然后通过单击GitHub web 上的提交按钮进行提交),预期的行为是提交由 Github.com 签名(在我的情况下使用GPG 密钥 ID:4AEE18F83AFDEB23 )
您无法签署通过 GitHub Web 界面创建的提交/标签。只能签署本地提交/标签。
这是因为签名密钥由两部分组成——公共的和私有的。并且私钥绝不能离开您的计算机。
公共部分可以加密数据,私有部分可以解密它,因此只有您可以读取加密数据。私钥签名数据,公钥验证,因此只有您可以使用您的密钥签名,但任何人都可以验证您的签名。
当您将 GPG 密钥上传到 GitHub 时,您只会上传公钥,因此 GitHub 只能验证已签名的提交/标签,但无法对其进行签名。