为什么合并需要您考虑共同的祖先?

时间:2011-04-01 12:07:11

标签: git diff three-way-merge

我正在学习Git,并且发现this site上的教程非常有用。在该页面上,关于合并,它包括:

         +---------- (D) ---------------+
        /             |                  \
(A) -- (B) -- (C) -------------- (E) -- (F)
                      |                  |
                 fix-headers           master
                                         |
                                        HEAD
     

合并提交是(F),有   父母(D)和(E)。因为(B)是   (D)和。之间的共同祖先   (E),(F)中的文件应包含   (B)和(D)之间的变化,   即标题修订,纳入   从(E)进入文件。

我不明白为什么你会担心共同的祖先B.你为什么不能合并D和E来产生F? D将来自B,但可能包含您想要的差异。 B和D之间可能有许多提交,并且正在进行更改。

3 个答案:

答案 0 :(得分:4)

(我不敢问这是个傻瓜,我不想侮辱任何人......)

也许你不明白这是git合并 你呢?

问题:这是D和E,你能告诉我F应该是什么样的吗?

D                                        E
using System;                            using System;
public void main()                       public void main()
{                                        {
     Console.WriteLine("hello world");        Console.WriteLine("Hello world!");
}                                        }

回答:不,你不能

但是,如果你知道B看起来像这样:

B
using System;
public void main()
{
     Console.WriteLine("hello world");
}

它变得毫无疑问, git可以自行处理

Dunno如果能回答你的问题......

答案 1 :(得分:2)

这很简单,因为如果您了解共同的祖先,合并会更好。见this answer,它有很好的解释原因。

答案 2 :(得分:1)

维基百科在3向合并上有good introduction