从 pushed/merged 提交中删除 GPG 签名?

Remove a GPG signature from a pushed/merged commit?

我正在做一个私人项目,我不想暴露我的身份,但很快我发现我的 Git 刚刚用我的个人 GPG 密钥签署了提交,它可以很容易地暴露我的身份。

更糟糕的是,它已经被推送到远程,而且它在一个已经被合并的pull request中。

有什么方法可以重新编辑提交以从中删除签名吗?

不能更改您所做的提交。

可以做一个新的提交,这在其他方面与“坏”提交完全相同,但省略了你想要省略的任何信息(GPG签名或密钥或其他任何东西,在这个案件)。这是一个 不同的提交 但你可以使用 git push --force 或类似的来告诉 GitHub 是的,我的意思是放弃原始提交以支持这个新的和改进的提交.

如果您有适当的权限,GitHub 实际上会切换分支以使用新的提交。这里的一个大问题——好吧,两个大问题,复数——is/are:

  • 您使该提交可用。谁知道从那以后复制了多少?

  • 当GitHub切换到新的和改进的提交时,他们不会立即丢弃旧的和糟糕的提交。他们将 最终 扔掉它,但在那之前,任何能找到它的哈希 ID 的人都将能够从 GitHub.

    检索提交

您可以联系 GitHub 支持,让他们尽快进行提交丢弃,但这不能解决第一个要点。 (“合并”表明您甚至可能没有执行 git push --force 的许可;如果是这样,您将需要得到那些有许可的人的合作。)