如何合并工作合并文件的第二,第三等时间?

时间:2009-11-07 07:19:29

标签: version-control merge

我很想知道修订控制系统如何合并。

假设你有一个文件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个文件是什么?

2 个答案:

答案 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