在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中正常运行?
答案 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设置为以管理员身份运行为我工作。
Run this program as an administrator
复选框我收到的错误引用了c:\windows\temp\meld-*
等临时文件,这些文件未被创建。升级Meld的权限似乎可以解决问题,因为它现在适用于git difftool
并在Meld中手动运行。