我对了解修订控制系统如何合并很感兴趣。
假设您有一个文件A。在一个分支上,文件A被修改-称为文件B。在另一个分支上,文件A被修改-称为文件C:
B
/
A
\
C
当第二个分支合并到第一个分支中时,我了解到B,C和它们的父级A之间执行了三向合并。结果是第一个分支上的文件D:
B--D
/
A
\
C
现在我不明白的是在另一次迭代之后会发生什么。 D被修改为E,C被修改为F:
B--D--E
/
A
\
C--F
如果我们要从第二个分支到第一个分支进行另一个合并,则三向合并中涉及的3个文件是什么?
最佳答案
我将给出一个使用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文章提供了更多的描述,示例,甚至还有更好的图片(从“历史记录”部分开始进行合并讨论)。
关于version-control - 在合并文件的第二次,第三次等时,合并如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1692308/