如何重新命名Git存储库中的所有提交记录?

3

我不小心使用了不同的GPG密钥、电子邮件、姓名等,在本地未推送的Git存储库中进行了几次提交(约20次)。如何重新签署/重新授权所有提交?

如果可以重新签署所有提交,那么这个答案就可以了,因为所有提交都是由我授权的,但是也可以提供一个可以针对特定作者的解决方案。

Bash脚本可以工作,但是我现在正在使用Windows。我必须打开WSL并从那里运行bash脚本。如果能够使用PowerShell完成,那就更好了,因为它是跨平台的。如果能够在单个Git命令中完成,那就更加优秀。谢谢。


4
如果使用链接中提供的答案,可以使用 git filter-branch 并指定尚未推送的提交范围 (@{u}..@),这样不会改变整个历史记录。如果我想要更简单快速一些(尤其是因为 filter-branch 相当复杂),我会对提交范围运行交互式变基,将 pick 替换为 edit,然后运行 git commit --amend --reset-author --no-edit && git rebase --continue 直到变基完成。 - terrorrussia-keeps-killing
4
要重新设置基准线可以使用 -x 选项: git rebase -i ... -x "git commit --amend --reset-author --no-edit" - LeGEC
@LeGEC 太棒了!我曾经认为 --interactive 总是需要一个 TODO 序列,因此不能通过命令行指定序列。现在我知道 -x 完美地适用于这种情况,因此即使没有 -i 也没关系。很高兴每天都能学到 Git 的新东西。感谢您的建议! - terrorrussia-keeps-killing
1个回答

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接