diff
我过去曾尝试使用 linux命令,但没有太多运气或耐心。我通常最终会使用 DiffMerge 或 Kdiff 等 GUI 实用程序。
最近,我开始尝试再次使用diff
ssh 来比较远程系统上的文件,并且我发现该-y / --side-by-side
选项非常有用,但我仍然觉得我没有充分利用这个实用程序。
所以我很好奇如何实现以下目标:
- 突出显示更改或使用颜色编码以使输出更具可读性
- 合并 - 选择有差异的行并将更改生效到其中一个文件中
另外,我在谷歌搜索时没有找到很多好的例子,所以如果您有一些充分利用 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
sdiff
,diff
并且ed
无论您走到哪里都应该成为您 shell 的一部分。
您的版本控制软件可能还内置了一个diff
和merge
工具。