注释的diff文件带有"<<<<<<< mine"和">>>>>>>你的"类型标记

ste*_*nmm 5 diff diff3

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

          <<<<<<< mine
          lines from mine
          =======
          lines from yours
          >>>>>>> yours        
Run Code Online (Sandbox Code Playgroud)

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

希望这很简单,我只是忽略了.

更新:

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

在此输入图像描述

kan*_*kan 5

你可以玩diff选项.下面的shell脚本

diff \
   --unchanged-group-format='%=' \
   --old-group-format='' \
   --new-group-format='%>' \
   --changed-group-format='<<<<<<< mine
%<=======
%>>>>>>>> yours
' \
orig.txt new.txt
Run Code Online (Sandbox Code Playgroud)

输出

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
Run Code Online (Sandbox Code Playgroud)

对于截图中的文件.你可以在文档中看到更多关于diff的格式化选项,例如这里.

一个班轮(从命令行工作,至少在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
Run Code Online (Sandbox Code Playgroud)