我试图理解为什么合并基在复杂的三向合并中很重要。为了理解 this ,我意识到我甚至不理解为什么它们在双向合并中很重要!
例如:假设我们在分支上提交B
" master"并在分支" alt"上提交C
。进一步假设B
和C
分别是每个分支master
和alt
的头部提交。假设我们希望将C
合并到B
以在主分支上形成提交D
。假设最后在" master"上提交A
branch是B
和C
的合并基础。
问题1:为什么A
在执行合并操作时很重要?无法抓取C
工作目录中的内容并将其合并到B
工作目录的内容中,而无需对内容进行任何参考&# 39; A
的工作目录?
编辑:
问题2:假设在C
和A
之间提交和/或在B
和A
之间提交。在执行合并操作时,这些提交是否会从git的角度来看?
答案 0 :(得分:2)
您所描述的是三向合并:B
和C
将与其共同祖先A
的知识合并。共同祖先用于了解A
和B
之间修改了哪些文件,因此需要将哪些更改带到C
({{1}之间已进行了哪些更改}和A
,标记冲突。)
想象一下你没有使用合并基础:现在你所拥有的只是每一面都有一堆文件。如果任何文件不同,则必须冲突。如果您有一个共同的祖先,您可以确定某个分支如何更改文件并提升一方(如果C
已更改文件但B
尚未更改,则合并将采用C
合并时的一面。)没有共同的祖先,那只会是冲突。