有没有办法删除所有以前提交的 gpg 标志或使用另一个 gpg 密钥重新签名

Coe*_*oel 5 git gnupg

我刚刚不小心丢失了我的旧 gpg 钥匙。我想知道是否可以删除每个提交的 gpg 标志或使用新的 gpg 密钥重新签名?

Jus*_*ang 5

我知道这是一个老问题,但我遇到了类似的情况,我必须签署(实际上重新签署)一堆旧提交。首先确认您想要(重新)签署多少先前的提交:

git log --show-signature

Run Code Online (Sandbox Code Playgroud)

假设您想签署前 5 个提交,那么您可以执行以下操作:

git rebase -i HEAD~5

Run Code Online (Sandbox Code Playgroud)

在编辑器中您将看到您的提交:

...
pick 4dd9ec5 fixed wrong config
pick 89d21f4 minor fix
...
Run Code Online (Sandbox Code Playgroud)

只需在您想要签名(重新签名)的每个提交之后添加此行即可。

exec git commit --amend --no-edit -s
Run Code Online (Sandbox Code Playgroud)

所以它看起来像:

...
pick 4dd9ec5 fixed wrong config
exec git commit --amend --no-edit -s
pick 89d21f4 minor fix
exec git commit --amend --no-edit -s
...

Run Code Online (Sandbox Code Playgroud)

保存并退出:

注意:确保您在上游存储库中具有强制推送权限(git push -f),因为这很可能需要全力推送。

另请注意:使用此方法,您可以签署除先前提交之外的所有提交。您可能无法签署您的初始提交。

来源