8

我到处读到重写已发布的提交历史是不好的,并且会“破坏”其他开发人员的存储库。

但是,我一直无法找到有关究竟会破坏什么以及如何修复它的详细信息。

那么,如果我要重写历史和git push --force,我应该告诉其他开发人员怎么做才能让他们保持最新状态?

4

1 回答 1

7

这可能是我见过的最好的解释:http: //git-scm.com/book/ch3-6.html#The-Perils-of-Rebasing

简短的回答是其他开发人员会拉下修改后的公共存储库,并尝试将这些更改与他们当前的工作适当地合并。因为最近的祖先可能已经更改,所以这个合并可能很复杂,可能需要手动执行。一个粗略的例子如下:

开发人员 A 进行多次提交并将它们推送到服务器。然后,开发人员 B 将这些提交合并到他们的本地分支(或可能来自这些提交之一的分支)。开发人员 A 决定重新调整他们的旧提交并将结果推送到服务器。

这有效地从开发人员 B 正在使用的服务器中删除提交,并将它们替换为具有不同标识符的大致相同的提交。

现在,如果开发人员 B 再次从服务器下拉,他们需要将 post-rebase 提交合并到他们的工作中,有效地合并两次相同的更改。

如果开发人员 A 在 rebase 过程中删除了提交或修改了提交,那么开发人员 B 需要处理更复杂的合并。

于 2012-06-22T02:52:14.820 回答