更改了很多git提交消息

时间:2010-10-31 00:13:27

标签: git commit commit-message

显然我很久以前就错误输入了我的电子邮件,每当我设置git时,所以我的电子邮件在许多存储库中都不正确(我键入了0而不是o)。我签署了所有提交,所以在每个回购中几乎每次提交多年都会说signed off by: <xxx0@foo.bar>而不是signed off by: <xxxo@foo.bar>。现在我不能只是切换我的电子邮件,所以我想切换这些提交消息。

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

首先,是否有可能在这种大规模的情况下更改消息而不会使事情变得混乱?我已经将这些更改推送到多个服务器,而其他服务器已将这些更改推到了这些更改。

第二,有没有办法在剧本中快速完成这项工作?即:

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

感谢所有帮助,谢谢!

1 个答案:

答案 0 :(得分:6)

如果变更集已经公开,而其他人已将其撤消,那么您不应该触摸它们。修改它们将改变它们的SHA,这将使其他人在皇家范围内搞砸(参见git rebase页面上的“从上游Rebase恢复”部分。)

现在我已经提到了这一点,假设他们没有被公之于众。如果是这种情况,您要用来修改它们的工具将是git filter-branch