Git:如何在不混淆团队的情况下正确地重写历史记录

时间:2013-12-09 00:54:43

标签: git github

我们有一个10人的开发团队,我们的7,000个提交历史需要一点点维护。人们犯了错误的凭据(使我们的作者列表相当严重),而且我还想删除一个我们不再需要在git中跟踪的grunt dist /目录(说实话,我们永远不应该跟踪dist /,但那是另一个主题......)

我的问题是,在不给团队带来任何问题的情况下,将历史记录更改推送到原点的最佳方法是什么?在我重写(本地)之后,我显示的提交次数是原来的3倍。我将确保这种推动的时机是这样的,每个人都需要从主人那里分支,但我不确定这一行动会产生什么样的负面影响。

有没有办法可以在进行这些更改后清理历史记录,或者最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

你不应该重写历史,因为它非常具有侵入性 - 每个人都必须从头开始重新克隆存储库。

相反,请考虑按照git shortlog documentation中的说明创建适当的.mailmap文件。 .mailmap允许以一致的方式显示看起来怪异的作者,从而解决您的问题而无需触及历史记录。

如果你真的需要重写,你可以使用this recipe,但它只适用于线性历史记录(一个没有任何合并的分支)。