我到处读到,重写已发布的提交历史记录很糟糕,并且会“破坏”其他开发人员的存储库。
然而,我无法找到关于究竟会破坏的细节以及如何修复它。
所以,如果我要重写历史记录和git push --force
,我应该告诉其他开发人员为了让他们获得最新信息而做什么?
答案 0 :(得分:4)
这可能是我见过的最好的解释:http://git-scm.com/book/ch3-6.html#The-Perils-of-Rebasing
简短的回答是,其他开发人员会删除修改后的公共存储库,并尝试将这些更改与其当前工作合并。由于最近的祖先可能已更改此合并可能很复杂,可能需要手动执行。一个粗略的例子如下:
Developer A进行了多次提交并将它们推送到服务器。然后,开发人员B将这些提交合并到其本地分支(或者可能是其中一个提交的分支)。开发人员A决定重新设置他们的旧提交并将结果推送到服务器。
这有效地从开发人员B使用的服务器中删除了提交,并用大致相同的具有不同标识符的提交替换它们。
现在,如果开发人员B再次从服务器上撤下,他们需要将post-rebase提交合并到他们的工作中,有效地将两次相同的更改合并。
如果开发人员A在rebase流程中删除了提交或修改提交,那么开发人员B有一个更复杂的合并来处理。