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

时间:2013-08-28 10:02:50

标签: git

在git存储库中,将分支 A 合并到 B ,与合并 B 相同的 A

2 个答案:

答案 0 :(得分:8)

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

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

开始:

 /A1-A2-A3
X 
 \B1-B2-B3

带有合并提交的A到B:

 /A1-A2-A3
X 
 \B1-B2-B3-A*(1,2,3)

快速前进的A到B:

 /A1-A2-A3
X 
 \A1-A2-A3-B1'-B2'-B3'

使用合并提交B到A:

 /A1-A2-A3-B*(B1,B2,B3)
X 
 \B1-B2-B3

B到A快进:

 /B1-B2-B3-A1'-A2'-A3'
X 
 \B1-B2-B3

答案 1 :(得分:0)

当合并生成新的合并提交时,有一个名为first parent的概念。
您可以通过命令git show merge-commit-hash检查合并提交的父级,将merge-commit-hash替换为实际的提交哈希。
然后您会得到类似以下的内容:

提交[提交]
合并:[parent1] [parent2]

假设您具有以下提交历史记录,C1是C2和C3的父级。分支A指向C2,分支B指向C3。

C1 <-C2
\ <-C3

将分支A(C2)合并到分支B(C3)中时,第一个父提交将是C3。
当您将分支B(C3)合并到分支A(C2)中时,第一个父提交将是C2。

您可以使用我的demo project进行检查。您可以使用TortoiseGit检查日志图。
Walk Behaviour → First Parent只需跟进第一次父提交即可。这将有助于了解整个历史。