1

显然,我很久以前在设置 git 时打错了我的电子邮件,所以我的电子邮件在许多存储库中都是不正确的(我输入了 a0而不是 a o)。我签署了我所有的提交,所以多年来几乎每个 repo 中的每个提交都使用它signed off by: <xxx0@foo.bar>而不是signed off by: <xxxo@foo.bar>. 现在我不能只切换我的电子邮件,所以我想切换这些提交消息。

我已经完成了git config --global user.email "xxxo@foo.bar",所以这不应该成为未来的问题。

首先,是否有可能在不把事情搞砸的情况下大规模地更改消息?我已经将这些更改推送到多台服务器,其他人已经撤消了这些更改。

其次,有没有办法可以在脚本中快速做到这一点?IE:

foreach(commit in log)
{
    change "<xxx0@foo.bar>" to "<xxxo@foo.bar>"
}

感谢所有帮助,谢谢!

4

1 回答 1

6

如果变更集已经公开并且其他人已经撤消了它们,那么您不应该触摸它们。修改它们将更改它们的 SHA,这将在皇家规模上为其他人搞砸(请参阅git rebase页面上的“从上游 Rebase 恢复”部分)。

既然我已经提到了,假设他们还没有被公开。如果是这种情况,您想要用来修改它们的工具将是git filter-branch.

于 2010-10-31T00:22:11.847 回答