Skip to content

Instantly share code, notes, and snippets.

Last active January 27, 2023 08:11
Show Gist options
  • Star 60 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save jvandyke/4355099 to your computer and use it in GitHub Desktop.
Save jvandyke/4355099 to your computer and use it in GitHub Desktop.
Use PHPStorm/WebStorm for git diff and merge tools
# ~/.gitconfig
# Add this to your global git configuration file
# Change phpstorm to webstorm, if you use that.
# Diff and merge tool changes
# Run `git difftool <directory/file>...` or `git mergetool <directory/file>...`
tool = phpstorm
tool = phpstorm
; This setting is optional, but prevents an annoying prompt between diffing files.
prompt = false
[difftool "phpstorm"]
; Putting this path here doesn't work. I would love to know why.
; path = /Applications/
cmd = webide diff $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$REMOTE") && pwd)/$(basename "$REMOTE")
trustExitCode = true
[mergetool "phpstorm"]
cmd = webide merge $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$REMOTE") && pwd)/$(basename "$REMOTE") $(cd $(dirname "$BASE") && pwd)/$(basename "$BASE") $(cd $(dirname "$MERGED") && pwd)/$(basename "$MERGED")
trustExitCode = true
# Add this to your .profile, .zshrc, .bashrc, etc.
# Add PHPStorm's bin directory to your path.
export PATH="/Applications/$PATH"
Copy link

Stopped working for me all the sudden. Now "git mergetool /somefile/..." gives me "No IDE instance has been found. New one will be started."

Like @raffaelo I used to have a mergetool gui pop up so I could visually merge what I wanted was best tool around.

Copy link

daveferrara1 commented Jul 28, 2016

JetBrains support supplied this to fix it:

Verified working: PhpStorm-EAP-162.1447.5.dmg

Copy link

thoma5B commented Aug 12, 2016

None of the solution worked for me Webstorm 2016.2, unless I set
prompt = true
Then even the handy solution of JohnAlbin works.

If prompt = false, only the first file in the list is opened correctly, then all the other files are not found, prompting:
Error showing diff: Can't find file /tmp/Us1QSf_myfile.js

Copy link

@thoma5B You just saved me some headaches with that prompt, thanks mate.

Copy link

If you can not find wstorm, open WebStorm, and go to Tools in menu bar then click Command-line Laucher. My WebStorm version is 2016.2.3.

BTW, I can directly use the solution of @JohnAlbin. Thanks.

Copy link

zored commented Jan 30, 2018

  • You can also configure it with commands like git config --global mergetool.pstorm.trustExitCode true.
  • You can use difftool --dir-diff, but currently tmp-files may be instantly removed, so I appended my difftool.pstorm.cmd with ; read and press Enter after diff completion.

Copy link

FYI: @zored I had to use && read instead on my system, in order for it to not delete the files before I'm done with them.
But that way, it works (for me too). Great work around, though! 👍 😉

P.S.: adding an additional --symlinks flag to the difftool --dir-diff is also a nice "upgrade"...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment