【问题标题】:Is there a way to remove gpg sign of all previous commits or resign it with another gpg key有没有办法删除所有以前提交的 gpg 标志或用另一个 gpg 密钥辞职
【发布时间】:2021-10-20 16:36:27
【问题描述】:

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

【问题讨论】:

  • 你试过git rebase --exec 'git commit --amend --no-edit -S <keyid>吗?
  • 是的,它给了我这个错误。错误:pathspec 'xxxxxxxx' 与 git 已知的任何文件都不匹配
  • 您需要将每个旧提交替换为新提交:新的哈希 ID 会有所不同。 @julian 的命令应该适用于此,但请注意它是 -S<keyid> 没有空格; -S <keyid> 被视为 -S,即没有指定 key-ID,然后 keyid 参数被视为文件名(这会导致路径规范错误)。
  • 感谢您的帮助。似乎该命令只更改了一次提交。有没有类似批处理的东西?

标签: git gnupg


【解决方案1】:

我知道这是一个老问题,但我遇到了类似的情况,我不得不签署(实际上是辞职)一堆旧提交。 首先确认你要签署多少之前的提交:

git log --show-signature

假设你想签署前 5 个提交,那么你可以这样做:

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),因为这很可能需要全力推送。

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

Source

【讨论】:

  • 关于您的最后一条评论:git rebase --root 不允许这样做吗?
  • @Aria 是的,你可以
猜你喜欢
  • 1970-01-01
  • 2023-02-21
  • 2017-09-16
  • 2022-10-22
  • 1970-01-01
  • 2018-11-06
  • 2014-08-17
  • 1970-01-01
  • 2015-04-03
相关资源
最近更新 更多