2

假设文件 MINE 和 YOURS 是 OLD 的后代。

FILE_MINE=

美国广播公司
定义
吉

FILE_OLD=

美国广播公司
jkl
吉

文件_你的=

美国广播公司
定义
吉

命令diff3 -m MIND OLD YOURS给出:

美国广播公司
<<<<<<< 旧
jkl
=======
定义
>>>>>>> 你的
吉

diff3 无法解决 MINE 和 YOURS 进行了相同的更改。

为什么?而且,有没有办法解决这个问题?

用这个逗你的大脑:

diff OLD MIND并且diff OLD YOURS在他们的输出中有相同的帅哥。

2c2
<jkl
---
> 定义

这些帅哥不应该在三路合并期间“取消”吗?

4

1 回答 1

2

你期望拥有什么?

正如描述 diff3 实用程序的文章所说:

...当所有三个输入文件都不同或只有旧文件不同时,此(合并)不成立;我们称之为冲突。当所有三个输入文件都不同时,我们将冲突称为重叠

因此,您描述的案例被视为冲突。'为什么这样?' 你可能会问。因为diff3算法。您可以在同一页面上找到说明:

您可以将此(合并)视为从您的中减去的并将结果添加到的中,或者将其合并到我的中,这些更改会变成您的旧

它无法正确解决差异,因为它没有进行更改的适当上下文。

如果您要说它应该使用其他方法工作,我会同意您的看法。但是它就是这样啊。diff3 并不完美,如果您想按照文章中所述正确操作,我建议您使用其他工具

于 2011-02-16T14:42:08.527 回答