23

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

4

2 回答 2

26

不,如果您将 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
于 2013-08-28T10:09:38.387 回答
0

first parent当合并生成新的合并提交时,有一个概念称为。
您可以通过 command 检查合并提交的父级,将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。

您可以使用我的演示项目进行检查。您可以使用 TortoiseGit 检查日志图。
Walk Behavior → First Parent只需跟进第一个父提交。这将有助于了解整个历史。

于 2020-04-24T07:59:55.833 回答