Ediff作为git difftool

时间:2016-08-23 08:57:33

标签: git emacs emacs-ediff

我正在尝试使用emacs ediff作为git difftool。

我已经遵循了这里提出的一些配置: Using ediff as git mergetool

当谈到某个文件的不同git版本之间的比较时,我完全没有问题:ediff运行良好,两个版本之间的差异被正确描述。

但是,当我尝试运行git difftool来比较文件的当前目录版本与某个git版本时,我遇到了问题。 对于某些文件,我收到以下错误:

  

apply: Wrong type argument: arrayp, nil

这很奇怪,因为这个错误只出现在某些文件中,而不是所有文件。

我已经尝试了几个文件,我认为经验法则如下: - 如果要比较的文件未放在git根目录中,则失败。 - 否则,ediff会显示文件当前版本与指定版本之间的差异而没有任何问题。

我尝试过上面提到的链接中解释的一些配置。所有这些都给了我相同的结果:git difftool在将非root git文件的当前目录版本与某个git版本进行比较时失败。

知道如何解决这个问题吗?

非常感谢。 -Bob

1 个答案:

答案 0 :(得分:2)

Git知道许多标准差异/合并工具,包括ediff / emerge。尝试

git config --global diff.tool ediff

并使用

调用它
git difftool --tool=ediffclient master -- <file>

或类似的。 ediffclient将使用emacsclient而不是启动新的emacs,我更喜欢YMMV。