无法在Git Bash中设置Meld作为差异工具

5

我可以帮助您解决在Windows 10上如何让Meld在Git Bash中工作的问题。我已经按照一些指示进行了尝试,但都没有成功。

在我输入下面这些命令后,什么都没有发生:

git config --global diff.tool meld
git config --global difftool.meld.path "/c/Program Files(x86)/Meld/Meld.exe"
git config --global difftool.prompt false

使用git difftool命令后,我得到了这个奇怪的错误:

git config option diff.tool set to unknown tool: merge
Resetting to default...

This message is displayed because 'diff.tool' is not configured.
See 'git difftool --tool-help' or 'git help config' for more details.
'git difftool' will now attempt to use one of the following tools:
opendiff kdiff3 tkdiff xxdiff meld kompare gvimdiff diffuse diffmerge ecmerge p4merge araxis bc codecompare emerge vimdiff
2 files to edit.

我也尝试了以下路径:

  • /c/Progra~2/meld/bin/
  • "/c/Program files (x86)/Meld/"
  • "c:/Program files (x86)/Meld/"

我的配置文件:

[user]
    name = user
    email = email@sample.com

[merge]
    tool = meld

[mergetool "meld"]
    cmd = meld --auto-merge \"$LOCAL\" \"$BASE\" \"$REMOTE\" --output \"$MERGED\" --label \"MERGE (REMOTE BASE MY)\"
    trustExitCode = false

[mergetool]
    prompt = false
    keepBackup = false

[diff]
    guitool = meld

    tool = meld
[difftool "meld"]
    cmd = meld \"$LOCAL\" \"$REMOTE\" --label \"DIFF (ORIGINAL MY)\"
    path = C:/Program Files(x86)/Meld/Meld.exe
[difftool]
    prompt = false
2个回答

2

你的路径书写不规范,且缺少一个空格字符。

你应该定义cmd而不是path

最终,这个代码应该能够正常工作:

Original Answer翻译成"最初的回答"

git config --global diff.tool meld
git config --global difftool.meld.cmd "\"C:/Program Files (x86)/Meld/Meld.exe\" \"\$LOCAL\" \"\$REMOTE\""
git config --global difftool.prompt false

编辑:

如果您想获取有关有效工具的Git准则,可以使用以下方法进行检查:

(注:原答案为"Original Answer")

git difftool --tool-help

无论如何,在我们的交流之后,您决定使用P4merge;这是对我的回答的一次后续更新。
以下是设置它的方法:
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd "\"C:/Program Files (x86)/Perforce/p4merge.exe\" \"\$LOCAL\" \"\$REMOTE\""
git config --global diff.tool p4merge
git config --global difftool.p4merge.cmd "\"C:/Program Files (x86)/Perforce/p4merge.exe\" \"\$LOCAL\" \"\$REMOTE\""

在我的.config文件中添加了缺失的空格字符,但我尝试了这些命令,它仍然显示相同的错误。 - Abdullah Akçam
你能否发布你当前的完整配置文件吗? - Bsquare ℬℬ
是的,这里有:https://pastebin.com/8rG4bkLy 虽然我在Bash方面还很新,但我已经做了很多研究,但仍然找不到解决方案。 - Abdullah Akçam
好的...你必须:1/删除difftool meld的路径定义。2/修复mergetool的meld可执行文件路径(像difftool一样定义完整路径)。3/也许使用git diff而不是直接使用difftool。 - Bsquare ℬℬ
这是否解决了你的问题? - Bsquare ℬℬ
显示剩余2条评论

0

我也在Windows 10上使用Git Bash,并且这个配置与Meld一起很好地工作:

diff.guitool=meld
merge.tool=meld
difftool.meld.path=C:/Program Files (x86)/Meld/meld/meld.exe
mergetool.meld.path=C:/Program Files (x86)/Meld/meld/meld.exe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接