6

我正在尝试使用具有如下标记的 Linux diff 命令创建一个 diff 文件(取自 diff3 手册页):

          <<<<<<< mine
          lines from mine
          =======
          lines from yours
          >>>>>>> yours        

这种格式对我来说非常直观,让我可以轻松地修复 vim 中的合并冲突,当我尝试使用 diff3 合并三个文件(我的、你的和原始的)时它工作得很好,但我想要普通 diff 的相同格式。我希望这很简单,但我无法得到它。我已经尝试了大多数主要选项(-e、--ed 等),甚至尝试创建 --changed-group-format 但没有成功。

希望这是我刚刚忽略的简单事情。

更新:

添加行、删除行和冲突行的两个文件差异示例:

在此处输入图像描述

4

1 回答 1

7

您可以使用 diff 选项。下面的shell脚本

diff \
   --unchanged-group-format='%=' \
   --old-group-format='' \
   --new-group-format='%>' \
   --changed-group-format='<<<<<<< mine
%<=======
%>>>>>>>> yours
' \
orig.txt new.txt

输出

This has some stuff
in that gets
modified in
a later version
<<<<<<< mine
and there is a conflict
=======
and there is a conflict (like here)
>>>>>>> yours
about which version
should be used.
newline

对于屏幕截图中的文件。您可以在文档中查看更多格式选项,例如此处

一个班轮(从命令行工作,至少在 linux 上):

diff --unchanged-group-format="%=" --old-group-format="" --new-group-format="%>" --changed-group-format="<<<<<<< mine%c'\\12'%<=======%c'\\12'%>>>>>>>> yours%c'\\12'" orig.txt new.txt
于 2013-04-22T20:31:19.433 回答