我认为问题很清楚,但是为了详细说明,请考虑您有一个分支X,并且从X创建了一个新分支Y。如果将分支X合并到master中,分支Y会发生什么。如果没有其他人对主节点进行任何其他更改,我可以将分支Y合并到主节点中吗?
我找到了this entry,但似乎没有相同的问题。 :)
答案 0 :(得分:5)
让我们更清楚地了解情况。
你有这个:
master
v
*---*
\
\
*---*---*---*---*---*---*
^ ^
X Y
然后,您将X合并为master:
master
v
*---*-----------------*
\ /
\ /
*---*---*---*---*---*---*
^ ^
X Y
现在您想将Y合并为master。
这完全没问题,并且正如您所说,假设对master尚未进行任何其他更改,则不会有任何其他冲突。
您将得到以下结果:
master
v
*---*-----------------*-----------*
\ / /
\ / /
*---*---*---*---*---*---*
^ ^
X Y
如果您从未做过Y,将X合并为master,但是继续使用X,最后又将X再次合并为master,那么将会出现类似的情况:
master
v
*---*-----------------*-----------*
\ / /
\ / /
*---*---*---*---*---*---*
^
X
除了涉及分支名称外,其他情况相同。
答案 1 :(得分:4)
子分支不受其父分支合并的影响。 对于人类用户而言,分支基本上只是一个概念,git只看到提交。
如果您决定在子分支的父节点之后的某个时刻将其合并到master中,则git会发现X的已合并最高提交是Y和master的共同祖先。
因此git只会应用X和Y之间提交的更改-因为之前的所有提交都已经在master上。
此外:如果您在将X合并到母版中时解决了冲突,则在将Y合并到母版中时不会出现相同的冲突,因为这些冲突已经解决。
但是:如果您更改了仅在Y上的提交中先前冲突的行,而master上的相同行不再与X上的相同,那么可能会在同一行上发生一些新的冲突。