Reputation: 26351
Since git diff
in powershell mostly results in a unreadable amount of whitespace or strange characters, I installed Perforce P4Merge, to handle merging and diff.
However, I can't make git diff
open the p4merge application to view the diff in. So far my .gitconfig looks like this:
[diff]
tool = p4diff
[difftool "p4diff"]
external = 'C:/PROGRA~1/Perforce/p4merge.exe "$LOCAL" "$REMOTE"'
prompt = false
[merge]
keepBackup = false
tool = p4merge
[mergetool "p4merge"]
cmd = "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
path = 'C:/PROGRA~1/Perforce/p4merge.exe'
prompt = false
keepBackup = false
keepTemporaries = false
trustExitCode = false
The paths are correct. But alas, git still attempts to present the diff in Powershell, when using git diff
.
So what's the trick to make this work?
Upvotes: 9
Views: 27251
Reputation: 101
I'm on Windows 7 using MSysGit v1.8.4.
For me, the only solution was to add p4merge to the system path variable (reboot needed afterwards). Having done this, I conf'd it like this:
git config --global diff.tool p4merge
git config --global difftool.p4merge.cmd 'p4merge.exe $LOCAL $REMOTE'
git config --global difftool.prompt false
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge.exe $BASE $LOCAL $REMOTE $MERGED'
git config --global mergetool.prompt false
git config --global mergetool.trustExitCode false
git config --global mergetool.keepBackup false
I recommend you stick to "git config" instead of editing the conf manually because hyphens etc sometimes are different between these methods.
Upvotes: 10
Reputation: 976
I personally like meld better from other open source tools for just diff,
Expanding @wengeezhang answer, here is the step to configure Meld as difftool.
git config --global diff.tool meld
git config --global difftool.meld.cmd "meld \"$LOCAL\" \"$REMOTE\""
Bonus tip: Go to Git repo's root directory and fire up following command to see all diff side by side
git difftool --dir-diff ./
Upvotes: 3
Reputation: 3101
ps:
Upvotes: 1
Reputation: 13388
Dan Limerick has an excellent short tutorial on setting up Perforce's p4merge on Windows:
http://danlimerick.wordpress.com/2011/06/19/git-for-window-tip-use-p4merge-as-mergetool/
Tested with Git 1.9.4 and p4merge 2014.1 on Windows 7.
Upvotes: 2
Reputation: 198
In your command prompt, try: git config --global diff.tool p4diff
That worked for me, using a config file set up as you had described:
[diff]
tool = p4merge
[difftool "p4diff"]
external = '"C:/Program Files/Perforce/p4merge.exe" "$LOCAL" "$REMOTE"'
Running git difftool
opened p4merge as expected.
Ref: How do I view 'git diff' output with a visual diff program?
Upvotes: 14