在终端环境下,两个文件要进行差异比对,通常我们会使用系统内建的diff指令,效果如下
diff指令仅仅是将文件差异处以上下对照呈现,并不会以颜色标示差异处。
再看看icdiff比较文件的结果,效果如下
其中各种颜色代表的意义如下
[绿色]表示[新增]
[红色]表示[删除]
icdiff将文件差异处以左右对照呈现的方式,并且将差异处标记上颜色。看上去直观多了!
icdiff官网: http://www.jefftk.com/icdiff
安装方法
MAC OS X
1 | $ brew icdiff |
Liunx
1 | $ pip install icdiff |
使用方法
如何比较两个文件差异
1 | $ icdiff <file_1> <file_2> |
如何搭配git使用
1 | $ git difftool --extcmd icdiff |
更精简的git用法
1 | $ git icdiff |
将icdiff设定为git预设比对差异工具
我们可以设定git预设使用icdiff来做差异比对,只需要设定git difftool path指向git-icdiff即可。
设定方法如下
1 | $ vim ~/.gitconfig |
建立~/bin/git-diff-wrapper.sh
文件,加入以下内容
1 | $ vim ~/bin/git-diff-wrapper.sh |
给脚本加上执行权限
1 | $ chmod +x ~/bin/git-diff-wrapper.sh |
赶紧使用$ git diff
试试吧,是不是已经默认使用icdiff做比较了!
如果你想要忽略这个外部diff而使用官方的diff效果的话
1 | $ git diff --no-ext-diff |
如何搭配svn使用
1 | $ svn diff --diff-cmd icdiff |
如何让svn预设使用icdiff
设定方法如下
编辑~/.subversion/config
文件
1 | $ vim ~/.subversion/config |
保存退出,之后执行svn diff
命令的时候,就可以彩色化的显示版本差异了,其实这样配置,相当于在执行svn diff
的时候多加了一个参数svn diff --diff-cmd = colordiff
常见错误
使用svn diff --diff-cmd icdiff
可能出现以下类似错误
1 | Sorry I don't know python, I can just report the error : |
解决:根据作者的回复,需改用python3
Setting python=python3 in your bashrc won’t make icdiff use python3. The easiest way to do that would be to change #!/usr/bin/env python to #!/usr/bin/env python3 at the top of icdiff.
具体可见issues36
参考文档
http://www.google.com
https://github.com/jeffkaufman/icdiff
https://github.com/jeffkaufman/icdiff/issues/36
https://gist.github.com/bobo52310/57db1af38cd87ddcd05a