oldratlee / translations

🐼 Chinese translations for classic software development resources
https://github.com/oldratlee/translations
Other
6.86k stars 1.56k forks source link

集中式工作流中冲突处理的疑问 #16

Closed oldratlee closed 8 years ago

oldratlee commented 8 years ago

同步自http://blog.jobbole.com/76847/#comment-62656 ,typhoon 的关于集中式工作流的问题:

  1. 如果小明和 小红的修改没有冲突,分别修改不同模块文件或者同文件的头和尾,小红是否还需要rebase?
  2. 如果小红提交中央仓库的时候,发生冲突,rebase本地仓库,在小红提交之前的那一会,还有其他人又提交了中央仓库的修改,那小红还要rebase,如何避免?
oldratlee commented 8 years ago
  1. 如果小明和 小红的修改没有冲突,分别修改不同模块文件或者同文件的头和尾,小红是否还需要rebase?

文中也有说到,不用--rebase也是可以合并小明的修改的(你说的Case实际没有冲突),会多出一个没有实际内容的合并提交。 使用--rebase的pull,是为了生成线性的历史,这样和svn风格一致。

关于git合并是否rebase这是个风格问题,不同人不同场合有不同的想法。

可以 看看 恰当的使用git pull --rebase 避免不必要的merge记录 - stackoverflow

更多Git的资料参见:https://github.com/xirong/my-git

如果你现在不觉得是个问题无所谓哪种,可以先按指南中的来。后来自己有喜好了,再看 :)

2.如果小红提交中央仓库的时候,发生冲突,rebase本地仓库,在小红提交之前的那一会,还有其他人又提交了中央仓库的修改,那小红还要rebase,如何避免?

小红第一次发生冲突,rebase本地仓库且解决冲突后,已经包含了远程提交。这样,第二次又有人提交了中央仓库的修改,情况就和第一次是一样的。

和SVN一样,绝大部分情况下,因为修改不同文件或是不同部分,不会有冲突。