我对了解修订控制系统如何合并很感兴趣。

假设您有一个文件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/

10-12 00:11
查看更多