git中最近的共同祖先可能是模棱两可的吗?

时间:2015-01-25 06:27:22

标签: git ambiguity ancestor

由于修订版可以有多个父母(合并)和多个孩子,因此可以使用最近的共同祖先"暧昧吗?

例如:

A---B--C--D                                                                                                                                               
 \   \   /
  \   E /
   \ / /
    F-G

E和D的最新共同祖先可能是B或F.

我尝试用git复制这个,我认为它把B作为共同的祖先。这里有理由选择B超过F吗?也许诉诸时间戳?或者它只是算法发现的第一个共同祖先,这将是一个任意的实现细节?

1 个答案:

答案 0 :(得分:4)

它不仅仅是可能的,它在documentation for git merge-base中提到:

  

git merge-base 在两次提交之间找到最佳共同祖先,以便在三向合并中使用。一个共同的祖先比另一个共同的祖先更好,如果后者是前者的祖先。没有任何更好的共同祖先的共同祖先是最佳共同祖先,即合并基础。 请注意,一对提交可以有多个合并基础。

[强调我的 - 我认为强调的句子应该包括“#34;最好",真的”这个词,并且:

  

...两者都不比另一个好(两者都是最佳合并基础)。如果未给出--all选项,则未指定哪个最佳输出。

(这意味着,正如您所建议的那样,它是一个实现细节)。