从master分出来两个分支a和b,然后在a和b上修改了同一段代码,然后a先合到了master,然后b再合到master,应该是会报冲突的吧?
那如果另一种情况,从master分出来一个分支a,然后在分支a上做了些修改,然后再从分支a上分出一个分支b,然后a和b又修改了同一段代码,然后a合到master,b再合,会报冲突吗?
从master分出来两个分支a和b,然后在a和b上修改了同一段代码,然后a先合到了master,然后b再合到master,应该是会报冲突的吧?
那如果另一种情况,从master分出来一个分支a,然后在分支a上做了些修改,然后再从分支a上分出一个分支b,然后a和b又修改了同一段代码,然后a合到master,b再合,会报冲突吗?
5 回答2.8k 阅读
3 回答2.6k 阅读
3 回答960 阅读
自己亲自试验了一下,针对问题中的第一个情况,答案是会冲突的。
针对问题中的第二个情况,从master分出来一个分支a,然后在分支a上做了些修改,然后再从分支a上分出一个分支b,然后a和b又修改了别的同一段代码,然后a合到master,b再合,会报冲突吗?
答案是:先从master分出来一个分支a,在a分出b之前,做了些修改(p1部分的修改),分出b之后,a分支又做了修改(p2部分的修改)。然后在b分支上,分别对p1部分和p2部分做出和a分支不同的修改。然后切到master分支上,先合并a,(然后push到远程master,这一步可做可不做),到此为止一切正常,然后在master上合并b,报冲突了,注意:p1部分没有报冲突,b分支的p1部分的代码成功覆盖master,报冲突的是p2部分,a分支的p2部分的修改和b分支的p2部分的修改冲突了,要解决冲突。
为什么p1部分没有报冲突呢,是因为p1部分的a的修改,是在a分出b之前做的,然后b再做修改就可以直接覆盖;而p2部分冲突,是因为p2部分的修改是a分出b后,a和b同时做的,所以冲突了。