如果您将父分支合并到主分支,子分支会发生什么?

时间:2020-07-24 10:47:43

标签: git

我认为问题很清楚,但是为了详细说明,请考虑您有一个分支X,并且从X创建了一个新分支Y。如果将分支X合并到master中,分支Y会发生什么。如果没有其他人对主节点进行任何其他更改,我可以将分支Y合并到主节点中吗?

我找到了this entry,但似乎没有相同的问题。 :)

2 个答案:

答案 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上的相同,那么可能会在同一行上发生一些新的冲突。

相关问题