我刚刚不小心丢失了我的旧gpg密钥。我想知道是否可以移除每个提交的gpg签名,或使用我的新gpg密钥重新签署它?
我知道这是一个老问题,但我遇到了类似的情况,需要签署(重新签署)一堆旧提交记录。 首先确认你想要(重新)签署多少以前的提交记录:
git log --show-signature
git rebase -i HEAD~5
...
pick 4dd9ec5 fixed wrong config
pick 89d21f4 minor fix
...
在想要签名(或重新签名)每个提交之后,只需添加此行即可。
exec git commit --amend --no-edit -s
那么它看起来就像:
...
pick 4dd9ec5 fixed wrong config
exec git commit --amend --no-edit -s
pick 89d21f4 minor fix
exec git commit --amend --no-edit -s
...
保存并退出:
注意:确保您在上游存储库中具有强制推送权限(git push -f),因为这很可能需要使用全部力量进行推送。
另请注意:使用此方法,您可以签署除一个之外的所有先前提交。您可能无法对初始提交进行签名。
编辑:源不再可用。因此这就是它的内容。
git rebase --root
不允许这样吗? - Aria
git rebase --exec 'git commit --amend --no-edit -S <keyid>
吗? - julian-S<keyid>
而不是有空格的-S <keyid>
;-S <keyid>
会被视为-S
,即没有指定key-ID,然后keyid参数会被视为文件名(这会导致路径规范错误)。 - torek