3

通过设置 gpg 密钥,我从本地仓库获得了 git 提交,以在 github 上显示“已验证”。

但是为什么我的 github 提交(当我在 github 上时)没有显示为“已验证”?它什么也没显示,表明 github 将它们视为未经验证的提交。这是预期的还是我需要在 github 上配置一些东西?

谢谢。

4

3 回答 3

3

在 2020 年秋季的某个时候,可能在 10 月 1 日至 20 日之间,GitHub 改变了他们处理 GPG 密钥提交验证 rebase 的方式,其中仅COMMITTER_DATE更改了 git。

所以这是我非常正常的用例流程:

  1. 我在一个尚未发布的功能的提交中发现了一个非常小的问题。
  2. 我提交它,然后重新调整临时修复提交。
  3. 因为已经过去了超过 1 天,所以 github 会将我的原始文件活动报告为今天发生。
  4. 我通过这样做来解决这个问题git rebase --committer-date-is-author-date <HASH>,它将 GitHub 文件修改日期重置为提交的日期时间,而不是今天/现在。

在 10 月 20 日之前,我在 8 年多的时间里执行这些步骤从未遇到过问题。

现在,突然之间,GitHub 将所有在这个 rebase 中的提交显示为未经验证:

在此处输入图像描述

您可以在https://github.com/hopeseekr/BashScripts/commits/fucked_up_gpg_verifications亲自查看

报错了吗?“没有用户与提交者电子邮件相关联。”,这显然是荒谬的,因为所有提交共享相同的电子邮件地址,并且它是帐户上的主要地址。

于 2020-10-22T07:52:55.590 回答
2

不完全是。如果您在 GitHub.com web 上提交某些内容(例如,通过单击铅笔图标编辑 README.md 文件,然后通过单击GitHub web 上的提交按钮进行提交),预期的行为是提交由 Github.com 签名(在我的情况下使用GPG 密钥 ID:4AEE18F83AFDEB23 )

GitHub签名截图

于 2020-05-10T05:58:32.830 回答
1

您无法签署通过 GitHub Web 界面创建的提交/标签。只能签署本地提交/标签。

这是因为签名密钥由两部分组成——公共的和私有的。并且私钥绝不能离开您的计算机。

公共部分可以加密数据,私有部分可以解密它,因此只有您可以读取加密数据。私钥签名数据,公钥验证,因此只有您可以使用您的密钥签名,但任何人都可以验证您的签名。

当您将 GPG 密钥上传到 GitHub 时,您只会上传公钥,因此 GitHub 只能验证已签名的提交/标签,但无法对其进行签名。

于 2020-05-09T18:07:21.257 回答