gpt4 book ai didi

git - Ediff 作为 git difftool

转载 作者:太空狗 更新时间:2023-10-29 13:25:16 24 4
gpt4 key购买 nike

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

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

在比较某个文件的不同 git 修订版时,我一点问题都没有:ediff 运行良好,并且正确描述了两个版本之间的差异。

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

apply: Wrong type argument: arrayp, nil

这很奇怪,因为这个错误只针对某些文件,而不是所有文件。

我试验了几个文件,我认为经验法则如下:- 如果要比较的文件没有放在git根目录下,那么比较失败。- 否则,ediff 会毫无问题地显示文件的当前版本与指定修订版之间的差异。

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

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

非常感谢。-鲍勃

最佳答案

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

git config --global diff.tool ediff

并调用它

git difftool --tool=ediffclient master -- <file>

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

编辑(回应评论):如果 git 提示 edifftool,请尝试将以下内容添加到您的全局 git 配置文件 ($HOME/.gitconfig):

[difftool "ediff"]
cmd = emacs --eval \"(ediff-files \\\"$LOCAL\\\" \\\"$REMOTE\\\")\"
[difftool "ediffclient"]
cmd = emacsclient --eval \"(ediff-files \\\"$LOCAL\\\" \\\"$REMOTE\\\")\"

我的印象是这些设置是安装的一部分,但也许我错了(或者可能在较新版本的 git 中发生了变化)。当我有时间时,我会尝试更深入地挖掘。

关于git - Ediff 作为 git difftool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39096686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com