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

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

这种格式对我来说非常直观,可以让我轻松地解决vim中的合并冲突,当我尝试使用diff3合并三个文件(mine,您的文件和原始文件)时,它的效果很好,但我希望使用普通diff的相同格式。 我希望这会很简单,但我一直没能做到。 我尝试了大多数主要选项(-e,-ed等),甚至尝试创建--changed-group-format,但未成功。

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

更新:

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

在此处输入图片说明

===============>>#1 票数:5 已采纳

您可以使用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

对于文件,如您的屏幕截图所示。 您可以在文档中找到diff的更多格式选项,例如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

  ask by stephenmm translate from so

未解决问题?本站智能推荐:

1回复

在文件名包含连字符(-)的情况下使用diff3

我正在尝试以这种方式使用diff3 diff3选项...我的年龄更大一些 我的问题是我可能无法使用它,因为我的所有3个文件都在其中包含“破折号”。 手册中提到: 这三个文件名最多只能是“-”,它告诉diff3读取该文件的标准输入。 所以我可能必须在运行diff3之前重命
1回复

在Git中,有没有一种方法(或工具)通过比较更改而不是文件进行合并?

在Git中,标准的合并算法使您可以比较两个分支中文件的最终状态,这意味着我必须记住或猜测导致两个分支中的这一点发生了什么变化。 通过显示公共祖先,在.gitconfig中设置merge mergestyle = diff3会有所帮助。 但是,我仍然需要做些比较-即扫描不同的部分以找出祖先
1回复

二进制文件的版本控制

我正在编写一个程序,该程序将使用其自己的二进制格式存储数据。 我想使某种形式的版本控制成为可能,至少两个不同的人应该能够对文件进行更改,然后将这些更改合并。 由于git似乎是一个非常常见且功能非常强大的版本控制系统,所以我想知道是否可以使用它。 我只有git的基本知识(pull a
2回复

帮助 - 将差异符号“<”,“|”或“>”更改为所需的符号?

diff -w命令用于创建并排比较diff文件(而不是并行) 我然后通过ssh终端使用vi查看它们,更改由“<”或“|”表示 或“>” 由于我正在查看的文件是源代码,仅导航到更改 使用上面的符号很困难,因为它们也是C源代码。 如何将这些默认符号更改为所需的符号?
2回复

如何为“ <|>” grep? (大于或小于符号)

如何在其中包含大于号或小于号的行grep? 以下grep命令不返回任何内容: grep“ <\\ |>” sdiff.out 但是,一次仅抓取一个符号确实会从文件中返回数据。 该文件包含sdiff命令的输出。 所有这些操作的目的是仅查看两个文件之间不同的实际
5回复

源代码中的“ <<<<<<<”符号

我正在阅读别人的Python代码,看到这些符号出现在文件顶部: 也有 和 我不确定那是什么。 编译时,解释器在该行抛出语法错误。 有人知道这条线的意思吗?
1回复

unix Diff实用程序 - 如何在没有<或>的情况下生成输出文件?

我正在使用diff来查看2个文件之间的差异。 它生成输出,如: 我可以生成如下输出: 没有< , > , --- , the first numbers line ???? 非常感谢。
2回复

合并时Araxis合并不显示文件名

我有与Araxis merge集成在一起的svn命令行客户端,即使没有发现冲突,我也想手动合并。 例如,当我运行时:所以在〜/ .subversion / config文件中,我设置了diff3外部编辑器: 但是当我跑步时 Araxis merge不会在面板标题中显示实际的文件
1回复

bash vs sh不能使用未修饰的流diff <(doSomething)<(doSomethingElse)

我想比较两个流。 我用bash编写了以下代码: 有效。 相反,sh中的以下代码 不:它给出了以下错误。 如何在RHEL服务器上使用sh代替bash?
2回复

PHP的日期时间->差异

我今天正在检查一个php代码,发现这真的很奇怪。 输出是 1年11个月30天22小时32分15秒 1年11个月29天22小时32分15秒 我有两个问题 我阅读了文档,上面写着$previous->diff($now); 显示$now $previous