如何将Meld设置为git mergetool

时间:2012-10-18 14:02:47

标签: git-merge meld

我已经设定:

git config --global merge.tool meld
git config --global mergetool.meld.path c:/Progra~2/meld/bin/

在“git mergetool”上写道:

Hit return to start merge resolution tool (meld):
The merge tool meld is not available as 'c:/Progra~2/meld/bin/'

我也试过了:

  • / C / PROGRA〜2 / MELD / bin中/
  • “/ c / Program files(x86)/ meld / bin /”
  • “c:/ Program files(x86)/ meld / bin /”

结果是一样的。

当我转到C:/ Program files(x86)/ meld / bin /并运行

python meld

该工具运行。

9 个答案:

答案 0 :(得分:62)

您可以使用完整的unix路径,例如:

PATH=$PATH:/c/python26
git config --global merge.tool meld
git config --global mergetool.meld.path /c/Program files (x86)/meld/bin/meld

这是“How to get meld working with git on Windows

中描述的内容

或者您可以采用“Use Meld with Git on Windows

中描述的包装方法
# set up Meld as the default gui diff tool
$ git config --global  diff.guitool meld

# set the path to Meld
$ git config --global mergetool.meld.path C:/meld-1.6.0/Bin/meld.sh

使用脚本meld.sh

#!/bin/env bash
C:/Python27/pythonw.exe C:/meld-1.6.0/bin/meld $@

abergmeier提及in the comments

  

我必须这样做:

git config --global merge.tool meld
git config --global mergetool.meld.path /c/Program files (x86)/Meld/meld/meldc.exe
  

请注意,meldc.exe特别创建为通过控制台在Windows上调用。因此,meld.exe将无法正常工作。


CenterOrbitthe comments中提及Mac OS安装homebrew,然后:

brew cask install meld
git config --global merge.tool meld
git config --global  diff.guitool meld

答案 1 :(得分:21)

这适用于Windows 8.1和Windows 10。

git config --global mergetool.meld.path "/c/Program Files (x86)/meld/meld.exe"

答案 2 :(得分:9)

meld 3.14.0

[merge]
    tool = meld
[mergetool "meld"]
    path = C:/Program Files (x86)/Meld/Meld.exe
    cmd = \"C:/Program Files (x86)/Meld/Meld.exe\" --diff \"$BASE\" \"$LOCAL\" \"$REMOTE\" --output \"$MERGED\"

答案 3 :(得分:5)

我认为mergetool.meld.path应该直接指向meld可执行文件。因此,您想要的命令是:

git config --global mergetool.meld.path c:/Progra~2/meld/bin/meld

答案 4 :(得分:5)

这里没有其他答案对我有用,可能是尝试了所有这些答案的组合。我能够使this accepted answer适应与meld合作。现在使用git 1.9.4,meld 3.14.0和windows 8.1。

编辑〜/ .gitconfig看起来像:

[diff]
    tool = meld
    guitool = meld
[mergetool "meld"]
    path = c:/Program Files (x86)/Meld/Meld.exe
[difftool "meld"]
    path = c:/Program Files (x86)/Meld/Meld.exe

答案 5 :(得分:1)

安装后http://meldmerge.org/ 我不得不告诉git它在哪里:

git config --global merge.tool meld
git config --global diff.tool meld
git config --global mergetool.meld.path “C:\Program Files (x86)\Meld\meld.exe”

这似乎可行。使用“ git difftool”或“ git mergetool”进行合并和比较

如果有人在启动后遇到诸如Meld崩溃的问题(python问题指示),那么您需要将Meld / lib设置为系统环境变量,如下所示 C:\Program Files (x86)\Meld\lib

答案 6 :(得分:1)

花了一些时间才能让Meld在Windows上正常工作。这是我当前的.gitconfig:

[merge]
    conflictstyle = diff3
    tool = meld
[mergetool "meld"]
    cmd = \"C:\\Program Files (x86)\\Meld\\Meld.exe\" --auto-merge \"$LOCAL\" \"$BASE\" \"$REMOTE\" --output \"$MERGED\"

Linux:

[merge]
    conflictstyle = diff3
    tool = meld
[mergetool "meld"]
    cmd = meld --auto-merge $LOCAL $BASE $REMOTE --output=$MERGED --diff $BASE $LOCAL --diff $BASE $REMOTE

我相信添加conflictstyle = diff3会更改内联文本,以在meld到达输出文件之前在输出文件中包含BASE内容,这可能会使它抢先一步。不确定。

现在,由于我已经指出Meld支持三路合并,因此还有另一种选择。当设置了“ diff3” git冲突样式时,Meld在显示BASE内容的行上打印“(??)”。 source

我非常喜欢的一些融合命令行功能:

  • --auto-merge在为您选择合适的东西方面做得很好(这不是防弹,但我认为节省的时间值得承担任何风险)。

  • 您可以在同一命令中添加额外的差异窗口。例如:

    --diff $BASE $LOCAL --diff $BASE $REMOTE

    将再添加两个带有本地和传入补丁差异的选项卡。从三向视图中分开查看这些差异非常有用,以查看每个分支中与基础的差异。我无法在Windows上正常工作。

  • 某些版本的meld允许您使用--label标记标签。在git修复传递给meld的文件名称包含本地/基本/远程文件之前,这一点更为重要。

  • --diff的顺序可能会影响制表符的顺序。我遇到了一些较旧的版本的问题,这些旧版本将附加差异放在首位,而主要的三向差异则更常用。

答案 7 :(得分:0)

对于 windows ,添加meld的路径如下所示:

 git config --global mergetool.meld.path C:\\Meld_run\\Meld.exe

答案 8 :(得分:0)

在 C:\Users\username 的 .gitconfig 文件中添加以下几行,解决了我在 Windows 10 中 3.20.3 的问题。

[user]
    name = doe
    email = doe@john.com
[core]
longpaths = true
[diff]
    tool = meld
[difftool "meld"]
    path=C:/Program Files/Meld/Meld.exe
[difftool]
    prompt = false
[merge]
    tool = meld
[mergetool "meld"]
    path=C:/Program Files/Meld/Meld.exe
[mergetool]
    prompt = false
    KeepBackup = false