Git与Windows上的Meld合并工具

时间:2013-02-11 21:41:13

标签: git meld

在Linux中,我最喜欢的合并工具是Meld,我使用或配置它与Git一起使用时没有任何问题。然而,在Windows中它是一个不同的故事。

首先,我从我在此处找到的包中安装了Meld:https://code.google.com/p/meld-installer/

然后,我将我的.gitconfig配置为支持Meld作为默认的mergetool

[merge]                                                      
    tool = meld                                                                         

[mergetool "meld"]                                           
    path = C:\\Program Files (x86)\\Meld\\meld\\meld.exe
    keepBackup = false                                   
    trustExitCode = false

所以,当我发生冲突时,我会做git difftool而Meld确实打开了。但是,Git写入传递给diff工具的文件的路径不正确。例如,即使Git在存储库目录(我称之为git mergetool的位置)中生成BASE,LOCAL和REMOTE文件,Meld也会尝试打开可执行文件目录中的每个文件。

而不是打开C:\ repo \ roses.txt.LOCAL.2760.txt,Meld尝试打开C:\ Program Files(x86)\ Meld \ meld \ roses.txt.LOCAL.2760.txt。

之前是否有人遇到此问题或知道如何配置Git / Meld在Windows中正常运行?

9 个答案:

答案 0 :(得分:135)

为什么不在Windows上使用git bash?

安装完简单后:

git config --global merge.tool meld
git config --global mergetool.meld.path "C:\Program Files (x86)\Meld\Meld.exe" <- path to meld here

多数民众赞成!

答案 1 :(得分:25)

Schuess,小心目录中的空格字符!

[merge]
    tool = meld
[mergetool "meld"]
    prompt = false
    keepBackup = false
    keepTemporaries = false
    path = C:/Program Files (x86)/Meld/meld.exe
    cmd = '\"/c/Program Files (x86)/Meld/meld.exe\" $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED'

答案 2 :(得分:10)

我遇到了完全相同的问题,发现我不得不蛮力地让它发挥作用。 这是我放在.gitconfig文件中的内容。 (注意我的meld可执行文件位于不同的位置)

[merge]
    tool = meld
[mergetool "meld"]
        cmd = "/c/Meld/meld/meld.exe $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED"

答案 3 :(得分:4)

我在meld安装程序的错误报告中找到了一个解决方案,在此页面上:

https://code.google.com/p/meld-installer/issues/detail?id=11

据我所知,问题是meld.exe程序(通过python解释器运行)不必要地将命令的工作目录设置为meld.exe的工作目录。这会导致相对路径在作为命令行参数传递时被错误地解释。

解决方案是使用AHK2EXe(AutoHotKey脚本 - &gt; exe)将提供的meld.exe替换为通过编译meld.ahk文件生成的meld.exe。只需下载页面最下面的脚本,因为那里发布了一些版本。

答案 4 :(得分:3)

我也遇到了类似的问题。使用的操作系统是Windows 10,以下更改对我有用。看起来更像路径问题

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

答案 5 :(得分:3)

您可以使用这两个命令(as Arugin says) - 使用Meld.exe的正确路径:

_handleSearch ({ inputNameValue, inputPriceValue }) {
  const lowerCased = inputNameValue.toLowerCase();
  let list = data.filter(hotel => hotel.name.toLowerCase().includes(lowerCased ))
  }

或者您可以直接编辑git config --global merge.tool meld git config --global mergetool.meld.path "C:\Program Files (x86)\Meld\Meld.exe" 文件并在其末尾添加以下内容:

C:\Users\YOUR_USER_NAME\.gitconfig

现在在Git Bash for Windows中调用[merge] tool = meld [mergetool "meld"] path = C:\\Program Files (x86)\\Meld\\Meld.exe ,Meld将打开为默认的difftool查看器。

答案 6 :(得分:2)

没有一个答案对我有用。我最终在.gitconfig文件中找到了这个

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

git merge mybranch结束冲突后,您只需键入git mergetool并打开焊缝。保存后,必须提交git并解决冲突。

由于某种原因,这仅适用于Meld 3.18.x,而Meld 3.20.x给我一个错误。

答案 7 :(得分:1)

由于某些原因,在Windows 10中,在安装过程中无法正确设置PATH环境变量,因此引发了一个奇怪的异常,即它无法找到“ C:\ Program Files( x86)/ Meld / bin“目录。

对我来说,一种解决方法是在git bash中执行:

export PATH=$PATH:"/C/Program Files (x86)/Meld/lib" 

或添加到Windows PATH

C:\Program Files (x86)/Meld/bin

答案 8 :(得分:0)

完成上述所有操作后,将Meld设置为以管理员身份运行为我工作。

  1. 右键单击“Meld.exe”
  2. 转到属性&gt; 兼容性并选择Run this program as an administrator复选框
  3. 我收到的错误引用了c:\windows\temp\meld-*等临时文件,这些文件未被创建。升级Meld的权限似乎可以解决问题,因为它现在适用于git difftool并在Meld中手动运行。