In a git merge conflict, what are the BACKUP, BASE, LOCAL, and REMOTE files that are generated?

git

Solution

Git performs a three-way merge, finding the common ancestor (aka "merge base") of the two branches you are merging. When you invoke `git mergetool` on a conflict, it will produce these files suitable for feeding into a typical 3-way merge tool. Thus:

- `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`.

Problem

I assume the LOCAL and REMOTE files are just what their name suggests, but what are BASE and BACKUP for?

Original source

Related problems