For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

Taken from https://gist.github.com/rambabusaravanan/1d1902e599c9c680319678b0f7650898#gistcomment-2132894

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

Last updated