注释的diff文件,带有“<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

时间:2013-04-16 17:11:38

标签: diff diff3

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

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

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

希望这很简单,我忽略了。

更新:

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

enter image description here

1 个答案:

答案 0 :(得分:5)

您可以使用差异选项。

下面的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

对于截图中的文件。你可以在文档中看到更多关于差异的格式化选项,例如: here

一个班轮(从命令行开始,至少在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