Comment on page

intellij as diff and mergetool

Setup idea script

First, you need to set up idea script by following the instruction here
If you are using mac, make sure you add -W on the open script as follows (see this issue)
open -Wna "IntelliJ IDEA.app" --args "$@"

setup git difftool & mergetool

open .git/config (or your global gitconfig file)
[merge]
tool = intellij
[mergetool "intellij"]
cmd = idea 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
[diff]
tool = intellij
[difftool "intellij"]
cmd = idea diff $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$REMOTE") && pwd)/$(basename "$REMOTE")
Explanation about LOCAL, REMOTE, BASE from stackoverflow
  • foo.LOCAL: the "ours" side of the conflict - ie, your branch (HEAD) that will contain the results of the merge
  • foo.REMOTE: the "theirs" side of the conflict - the branch you are merging into HEAD
  • foo.BASE: the common ancestor. useful for feeding into a three-way merge tool
  • foo.BACKUP: the contents of file before invoking the merge tool, will be kept on the filesystem if mergetool.keepBackup = true.
idea merge syntax
idea merge <path1> <path2> [<base>] <output>