我很想知道修订控制系统如何合并。
假设你有一个文件A.在一个分支上,文件A被修改 - 称之为文件B.在另一个分支上,文件A被修改 - 称之为文件C:
B
/
A
\
C
当第二个分支合并到第一个分支时,我理解在B,C和它们的父A之间执行3向合并。结果是第一个分支上的文件D:
B--D
/
A
\
C
现在我不明白的是在另一次迭代之后会发生什么。 D被修改,成为E,C被修改,成为F:
B--D--E
/
A
\
C--F
如果我们想要从第二个分支到第一个分支进行另一个合并,那么3向合并中涉及的3个文件是什么?
答案 0 :(得分:2)
我将使用Git给出一个具体的例子(其他版本控制系统会有所不同)。将B和C合并在一起时,会得到如下所示的历史记录:
B---D
/ /
A /
\ /
C
此时,D有两个父母,B和C.在你做了更多工作并介绍E和F并进行合并之后,你会得到类似的东西:
B---D--E--G
/ / /
A / /
\ / /
C-----F
在合并中,E和F之间最接近的公共父级是C.
git merge文档中有更多示例和说明如何工作。此外,Git for Computer Scientists文章有更多描述,示例,甚至更好的图片(从合并讨论的“历史”部分开始。)
答案 1 :(得分:-1)
我猜参与的3个文件是E,F和A.参见http://progit.org/book/ch3-2.html中的图3-16