显然我很久以前就错误输入了我的电子邮件,每当我设置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>"
}
感谢所有帮助,谢谢!
答案 0 :(得分:6)
如果变更集已经公开,而其他人已将其撤消,那么您不应该触摸它们。修改它们将改变它们的SHA,这将使其他人在皇家范围内搞砸(参见git rebase
页面上的“从上游Rebase恢复”部分。)
现在我已经提到了这一点,假设他们没有被公之于众。如果是这种情况,您要用来修改它们的工具将是git filter-branch
。