我已经设置:
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/程序~2/meld/bin/
"/c/程序文件 (x86)/meld/bin/"
"c:/程序文件 (x86)/meld/bin/"
结果是一样的。
当我去 C:/Program files (x86)/meld/bin/ 并运行
python meld
工具运行。
.gitconfig
的粘贴部分
您可以使用完整的 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 将无法正常工作。
CenterOrbit 在 the comments 中提到 Mac OS 安装 homebrew,然后:
brew cask install meld
git config --global merge.tool meld
git config --global diff.guitool meld
这在 Windows 8.1 和 Windows 10 上对我有用。
git config --global mergetool.meld.path "/c/Program Files (x86)/meld/meld.exe"
git config --global mergetool.meld.path "c:\Program Files (x86)\meld\meld.exe"
使用 PowerShell 时
融合 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\"
我认为 mergetool.meld.path
应该直接指向 meld 可执行文件。因此,您想要的命令是:
git config --global mergetool.meld.path c:/Progra~2/meld/bin/meld
这里没有其他答案对我有用,可能来自尝试所有这些答案的组合。我能够调整 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
安装它 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
为了让 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
会更改内联文本,以便在融合之前将 BASE 内容包含在输出文件中,这可能会给它一个良好的开端。没有把握。
现在,由于我已经注意到 Meld 支持三向合并,因此还有另一种选择。当设置“diff3” git 冲突样式时,Meld 在显示 BASE 内容的行上打印“(??)”。资源
一些我非常喜欢的融合命令行功能:
--auto-merge 在为您选择正确的东西方面做得很好(它不是防弹的,但我认为节省的时间值得任何风险)。
您可以在同一命令中添加额外的差异窗口。例如: --diff $BASE $LOCAL --diff $BASE $REMOTE 将添加两个带有本地和传入补丁差异的选项卡。这些对于从 3 向视图中单独查看以查看每个分支中与基础的单独差异非常有用。不过,我无法在 Windows 上使用它。
某些版本的 meld 允许您使用 --label 标记选项卡。在 git 将传递给 meld 的文件的名称修复为包括本地/基本/远程之前,这一点更为重要。
--diff 的顺序会影响 Tab 键的顺序。我在一些将附加差异放在首位的旧版本中遇到了麻烦,而主要的 3 路差异则更频繁地使用。
对于windows,添加meld的路径如下:
git config --global mergetool.meld.path C:\\Meld_run\\Meld.exe
在 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
git config --global merge.tool 融合 git config --global mergetool.meld.path c:/Progra~2/meld/Meld/
不定期副业成功案例分享
git config --global merge.tool meld
git config --global mergetool.meld.path /c/Program files (x86)/Meld/meld/meldc.exe
tab
键,它会建议路径,以便轻松正确。$ brew install homebrew/x11/meld
$ git config --global merge.tool meld
$ git config --global diff.guitool meld