4

我有两个分支,

A-C (master)
 \
  B-D (clean)

A..C我添加了一个包含一堆文件的目录。在A..B我添加了完全相同的目录和文件中,这git diff C..B表明该目录中没有任何更改。在B..D我对这些文件进行了更改。我想将这些更改合并到master. 我尝试了两种不同的方法,一种干净利落,另一种非常糟糕:

git merge clean

上面的命令会产生大量冲突,实际上每个文件都有冲突。

git merge clean^
git merge clean

以上工作完美,递归合并,完全没有冲突。

上述情况是如何以及为什么会发生的?git能不看历史就确定是早期分裂吗?或者这是否会过于繁重而无法用作合并策略?

4

1 回答 1

3

在第一种情况下git merge clean,Git 没有作为合并基础的冲突文件的共同祖先,因此看起来您正在尝试将两个创建相同文件名但内容不同的树组合在一起。(共同祖先 A 没有任何冲突的文件。)

在第二种情况下,git merge clean^ && git merge clean第一次合并再次看不到共同的祖先,但能够轻松解决它,因为文件是相同的。然后第二次合并可以采用现在已知的祖先,并应用差异。

于 2011-05-27T03:53:21.920 回答