How do I use Meld as a merge tool with Sourcetree on Windows?

mynameisJEFF picture mynameisJEFF · Feb 16, 2015 · Viewed 16.2k times · Source

I have the following in my .gitconfig file:

[user]
    name = myname
    email = [email protected]
[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

And in Sourcetree, I have the following settings:

Enter image description here

However, when I right-clicked a file on Sourcetree to do an external diff, I was able to open Meld, but the contents of the file were not displayed at all.

Enter image description here

What have I done wrong in the settings?

Answer

Paris Qian Sen picture Paris Qian Sen · May 25, 2016

I feel the existing answers slightly missed the point. Here is my own dog food:

Enter image description here

Arguments Detail:

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

For External Diff, you need to remove $BASE from your argument list.

For 3-way merging, you need to click on the External Merge Tool option instead, which will only be available if there are any unsolved conflicts.

Context menu of External Merge Tool

If you are not restricted to Sourcetree + Meld, I reckon the Git Extensions + KDiff3 suite could be a good open-sourced alternative also.