在 git 存储库中,将分支A合并到B与将B合并到A相同吗?
问问题
6309 次
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 回答