【问题标题】:How does merging work the second, third, etc. time you merge a file?合并文件的第二次、第三次等如何进行合并?
【发布时间】:2009-11-07 07:19:28
【问题描述】:

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

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

【问题讨论】:

    标签: version-control merge


    【解决方案1】:

    我将给出一个使用 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 文章有更多描述、示例,甚至更好的图片(从“历史”部分开始进行合并讨论。)

    【讨论】:

      【解决方案2】:

      我猜这3个文件是E、F、A。见图3-16http://progit.org/book/ch3-2.html

      【讨论】:

        猜你喜欢
        • 2020-09-14
        • 2020-04-16
        • 2021-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多