如何在Windows上将Meld用作与Sourcetree的合并工具?

时间:2015-02-16 13:14:30

标签: atlassian-sourcetree meld

我的.gitconfig文件中有以下内容:

[user]
    name = myname
    email = myname@gmail.com
[core]
    autocrlf = true
    excludesfile = C:\\Users\\myname\\Documents\\gitignore_global.txt
[diff]
        tool = meld
[difftool "meld"]
        cmd = "C:/Program Files (x86)/Meld/meld/meld.exe"
        prompt = false
[merge]
        tool = meld

[mergetool "meld"]
        cmd = "C:/Program Files (x86)/Meld/meld/meld.exe"
[difftool "sourcetree"]
    cmd = "C:/Program Files (x86)/Meld/meld/meld.exe $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE"
[mergetool "sourcetree"]
    cmd = 'C:/Program Files (x86)/Meld/meld/meld.exe' \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
    trustExitCode = true

在Sourcetree中,我有以下设置:

Enter image description here

然而,当我右键单击Sourcetree上的文件来执行外部差异时,我能够打开Meld,但文件的内容根本没有显示。

Enter image description here

我在设置中做错了什么?

5 个答案:

答案 0 :(得分:27)

我觉得现有的答案略微错过了这一点。这是我自己的狗粮:

Enter image description here

参数详情:

Diff:  $LOCAL $REMOTE
Merge: $LOCAL $BASE $REMOTE --auto-merge --output=$MERGED

对于External Diff,您需要从参数列表中删除$ BASE。

对于3向合并,您需要单击External Merge Tool选项,该选项仅在存在任何未解决的冲突时才可用。

Context menu of External Merge Tool

如果你不仅限于 Sourcetree + Meld ,我认为Git Extensions + KDiff3套件也可以是一个很好的开源替代品。

答案 1 :(得分:20)

这里使用的实际设置是为了实现真正的3向合并,只读了THEIRS和MINE标签是这样的:

$LOCAL $BASE $REMOTE --auto-merge --output=$MERGED

请注意=之后的--output

我终于通过挖掘对这个问题的第二个答案Git merging using Meld的评论来获得这个命令。

答案 2 :(得分:6)

对于 OS X ,它看起来像这样:

  • Diff命令:meld

    • 参数:@LOCAL @REMOTE
  • 合并命令:meld

    • 参数:$LOCAL $BASE $REMOTE --auto-merge --output=$MERGED

P.S。

要从命令行使用它,您必须通过 brew 安装它: brew install meld

enter image description here

答案 3 :(得分:2)

如果您不想修改PATH环境变量,可以使用与DOS兼容的短名称:

C:\Progra~1 = C:\Program Files
C:\Progra~2 = C:\Program Files (x86)

这可以避免路径中引起问题的空间并与Sourcetree一起使用。它是hackish,但它确实有效。然后你可以使用这样的东西作为Meld的路径:

C:\Progra~1\Meld\meld.exe

可能无法保证Progra~1映射到64位目录,因此您可能需要尝试将哪一个映射到哪个。

答案 4 :(得分:1)

尝试将meld.exe的位置添加到PATH(例如C:\ Program Files(x86)\ Meld),然后在 Diff Command 中,只需输入meld而不是完整路径。请参阅要点 How to use meld with Sourcetree on Windows