【发布时间】:2021-03-27 20:30:44
【问题描述】:
我不小心在不同的 GPG 密钥、电子邮件、名称等下向本地未推送的 Git 存储库提交了一些(大约 20 次)提交。如何在其他配置下对所有提交进行辞职/重新创作?
重新编写所有次提交的答案会很好,因为所有提交都是由我编写的,但可以针对某个作者的解决方案也很好。
Bash 脚本可以工作,但我目前在 Windows 上。我必须打开 WSL 并从那里运行 bash 脚本。 PowerShell 中的答案将不胜感激,因为它是跨平台的。如果它可以在单个 Git 命令中完成,那也很棒。谢谢。
【问题讨论】:
-
如果使用链接的答案,您可以使用
git filter-branch并指定不会更改整个历史记录的未推送提交范围 (@{u}..@)。如果我想让它简单快速(尤其是filter-branch非常复杂),我会为提交范围运行交互式rebase,用edits 替换picks,然后运行git commit --amend --reset-author --no-edit && git rebase --continue直到变基完成。 -
@fluffy : 或使用
-x选项变基 :git rebase -i ... -x "git commit --amend --reset-author --no-edit" -
@LeGEC 太棒了!我真的曾经认为
--interactive总是只需要一个 TODO 序列,因此没有假设通过命令行指定序列。现在我看到-x非常适合这种情况,因此即使-i在这里也没有必要。很高兴每天都知道 git 上的新事物。谢谢你的建议!
标签: git