我正在尝试转换到一个新的GPG密钥。我想使用新的GPG密钥重新签署之前在Git仓库中带有有效签名的所有提交,这些提交是使用我的旧密钥签署的。
换句话说,我如何自动重新签署(使用新密钥)我使用旧密钥签署的所有提交?
如果你需要示例中使用的指纹,请使用0000000000000000000000000000000000000000
作为我的旧GPG密钥指纹,使用1111111111111111111111111111111111111111
作为我的新密钥指纹。
我正在尝试转换到一个新的GPG密钥。我想使用新的GPG密钥重新签署之前在Git仓库中带有有效签名的所有提交,这些提交是使用我的旧密钥签署的。
换句话说,我如何自动重新签署(使用新密钥)我使用旧密钥签署的所有提交?
如果你需要示例中使用的指纹,请使用0000000000000000000000000000000000000000
作为我的旧GPG密钥指纹,使用1111111111111111111111111111111111111111
作为我的新密钥指纹。
您需要使用 git filter-branch
(如此处所示),至少需要这样做:
git filter-branch --commit-filter 'git commit-tree -S "$@"' HEAD
如果您只想签署自己的提交,可能需要使用更复杂的指令,例如此处所示。
新的git filter-repo
尚不支持GPG签名(问题67)。
另一种方法,也在这里提到, 是通过使用git rebase
:
git rebase --exec 'git commit --amend --no-edit -S<keyid>
main
分支上的所有提交? - Ben Zelnick