ChatGPT解决这个技术问题 Extra ChatGPT

如何将 Meld 设置为 git mergetool

我已经设置:

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

工具运行。

marcin-chwedczuk.github.io/use-meld-as-git-merge-diff-tool 复制 .gitconfig 的粘贴部分
相关:“使用 .gitconfig 配置差异工具”:stackoverflow.com/a/6412645/4561887(对于融合,只需在此答案中将 vimdiff 替换为 meld
请评论并投票给 upstream issue,这样未来的用户甚至不需要担心这一点。

D
Declan McKenna

您可以使用完整的 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

对我来说,我必须这样做:git config --global merge.tool meld git config --global mergetool.meld.path /c/Program files (x86)/Meld/meld/meldc.exe
@abergmeier 好的,我已将您的评论包含在答案中以提高知名度。
@abergmeier 的解决方案有效。此外,在 Windows git bash 上,如果您按 tab 键,它会建议路径,以便轻松正确。
仅供参考,在 Mac OSx 上:安装 homebrew,然后:$ brew install homebrew/x11/meld $ git config --global merge.tool meld $ git config --global diff.guitool meld
@CenterOrbit 好的,我已将您的评论包含在答案中以提高知名度。
o
oldwizard

这在 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 时
有时您可能会在 git config 之后重新启动 git gui(进行更改)
T
Tomasz Maj

融合 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\"

请注意,这是一个废弃的问题。好久没接触合并工具了,所以即使你的答案是最好的,我也无法证明并标记为答案。
你好,我试过了,效果很好。就我而言,正确调用 meld 是缺少“cmd”
使用此命令行模板时,Meld 没有为我正确保存合并文件。有关有效的答案,请参见 stackoverflow.com/a/40777256/768795
d
dbn

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

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

C
Community

这里没有其他答案对我有用,可能来自尝试所有这些答案的组合。我能够调整 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

Y
Yohanim

安装它 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


j
jozxyqk

为了让 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 路差异则更频繁地使用。


S
Sylvain Martin

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

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

S
Sameera De Silva

在 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 

B
Bhavesh Gupta

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