如何使用“diff”命令获得最大的收益?

如何使用“diff”命令获得最大的收益?

diff我过去曾尝试使用 linux命令,但没有太多运气或耐心。我通常最终会使用 DiffMerge 或 Kdiff 等 GUI 实用程序。

最近,我开始尝试再次使用diffssh 来比较远程系统上的文件,并且我发现该-y / --side-by-side选项非常有用,但我仍然觉得我没有充分利用这个实用程序。

所以我很好奇如何实现以下目标:

  1. 突出显示更改或使用颜色编码以使输出更具可读性
  2. 合并 - 选择有差异的行并将更改生效到其中一个文件中

另外,我在谷歌搜索时没有找到很多好的例子,所以如果您有一些充分利用 diff 的 linux-fu 秘诀,可以分享一下吗?我将主要比较基于文本的配置文件,但任何技巧和技巧都会很棒。

以供参考- DiffMerge 实用程序可以通过颜色突出显示轻松并排显示更改。顶部的图标允许您在“显示全部”、“显示差异”和“显示上下文差异”视图之间切换。会喜欢命令提示符下的一些功能。

ps:我还应该注意到,我发现非常有用的另一个选项是--suppress-common-lines我在这方面了解到的简洁易读的博客文章

答案1

没有特定的顺序:

  • meld是一个非常好的差异程序,它可以进行非常好的差异和三向合并。
  • git config --global merge.conflictstyle diff3为您提供三路合并输出,以便与meld.
  • wdiff单词差异,非常好,如果有色wdiff -w "$(tput bold;tput setaf 1)" -x "$(tput sgr0)" -y "$(tput bold;tput setaf 2)" -z "$(tput sgr0)" ...
  • 为了最大限度地减少diff输出中的冗余,我通常使用--ignore-all-space( -w) 选项
  • diff-ignore-moved-lines* 按照标签上的说明进行操作。
  • difff* 可用于仅比较给定字段中匹配的行。

* 免责声明:我是作者,开发这些是为了帮助 CLI 和 GUI 比较和合并。

答案2

我发现vimdiff非常有用。

答案3

要在差异中着色,您应该查看http://colordiff.sourceforge.net/。这只是 diff 的包装,因此所有命令选项仍然有效。

如果你有 ubuntu,只需编写:

    # sudo apt-get install colordiff

冒着不满足您的用例的风险git是一个非常好的选择VCS与许多比较和合并工具(命令行和 GUI 工具)很好地集成。如果可以选择,请尝试一下。

答案4

尝试sdiff

diff还具有选项(-e-ed)来创建合并脚本以供使用ed

sdiffdiff并且ed无论您走到哪里都应该成为您 shell 的一部分。

您的版本控制软件可能还内置了一个diffmerge工具。

相关内容