将分支A合并为B与将B合并为A相同吗?

use*_*428 11 git

在git存储库中,将分支A合并到B中,B合并为A

Dou*_*der 10

不,如果你将A合并到B中,那么在结束分支A中只有A的变化,而B将同时进行A + B的变化.

如果将B合并为A,则A同时具有A + B更改,而B将仅具有B的更改.

开始:

 /A1-A2-A3
X 
 \B1-B2-B3
Run Code Online (Sandbox Code Playgroud)

具有合并提交的A到B:

 /A1-A2-A3
X 
 \B1-B2-B3-A*(1,2,3)
Run Code Online (Sandbox Code Playgroud)

A到B快进:

 /A1-A2-A3
X 
 \A1-A2-A3-B1'-B2'-B3'
Run Code Online (Sandbox Code Playgroud)

具有合并提交的B到A:

 /A1-A2-A3-B*(B1,B2,B3)
X 
 \B1-B2-B3
Run Code Online (Sandbox Code Playgroud)

B到A快进:

 /B1-B2-B3-A1'-A2'-A3'
X 
 \B1-B2-B3
Run Code Online (Sandbox Code Playgroud)

  • 是的,那么两种情况下生成的(合并的)分支将完全相同? (2认同)
  • 从我的图表中可以看出,在每种情况下,目标分支的历史记录都发生了不同的变化。 (2认同)
  • @Kasra 分支不仅仅是头部的一组文件。它也是头部之前的所有提交历史记录。 (2认同)
  • @DouglasLeeder 你是对的。但明确地说,将 B 合并到 A 后 A 头部的文件集与将 A 合并到 B 后 B 头部的文件集完全相同,对吗? (2认同)
  • 是的,文件集将是相同的(合并/git bug 等的模数问题)。 (2认同)