我认为问题很清楚,但只是为了详细说明,假设您有一个分支 X,并且您从 X 创建了一个新分支 Y。如果我将分支 X 合并到 master 分支 Y 会发生什么。如果没有其他人对 master 进行任何其他更改,我是否可以将分支 Y 合并到 master 中而没有任何冲突?
我找到了这个条目,但它似乎不是同一个问题。:)
让我们更清楚地了解情况。
你有这个:
master
v
*---*
\
\
*---*---*---*---*---*---*
^ ^
X Y
Run Code Online (Sandbox Code Playgroud)
然后将 X 合并到 master 中:
master
v
*---*-----------------*
\ /
\ /
*---*---*---*---*---*---*
^ ^
X Y
Run Code Online (Sandbox Code Playgroud)
现在您想将 Y 合并到 master 中。
这完全没问题,并且假设如您所说,没有对 master 进行其他更改,则不会有任何其他冲突。
你会得到这样的结果:
master
v
*---*-----------------*-----------*
\ / /
\ / /
*---*---*---*---*---*---*
^ ^
X Y
Run Code Online (Sandbox Code Playgroud)
如果你从来没有制作过 Y,将 X 合并到 master,但继续在 X 上工作,最后又将 X 合并到 master,那么你就会出现这种情况:
master
v
*---*-----------------*-----------*
\ / /
\ / /
*---*---*---*---*---*---*
^
X
Run Code Online (Sandbox Code Playgroud)
除了涉及哪些分支名称之外,这是相同的情况。
儿童分支不会受其父分支合并。分支基本上只是人类用户的一个概念,git 只看到提交。
如果您决定在其父分支之后的某个时刻将子分支合并到 master 分支,git 会发现 X 已经合并的顶级提交是 Y 和 master的共同祖先。
因此 git 只会应用 X 和 Y 之间提交的更改 - 因为之前的所有提交都已经在 master 上。
另外:如果您在将 X 合并到 master 时解决了冲突,那么在将 Y 合并到 master 时将不会再次出现相同的冲突,因为冲突已经解决。
但是:如果您更改了之前仅在 Y 上的提交中发生冲突的行,并且 master 上的相同行看起来不再与 X 上的相同,那么同一行上可能会发生一些新的冲突。
| 归档时间: |
|
| 查看次数: |
590 次 |
| 最近记录: |