git-mergetool(1)
================

NAME
----
git-mergetool - Run merge conflict resolution tools to resolve merge conflicts

SYNOPSIS
--------
'git mergetool' [--tool=<tool>] [-y|--no-prompt|--prompt] [<file>...]

DESCRIPTION
-----------

Use `git mergetool` to run one of several merge utilities to resolve
merge conflicts.  It is typically run after 'git merge'.

If one or more <file> parameters are given, the merge tool program will
be run to resolve differences on each file.  If no <file> names are
specified, 'git mergetool' will run the merge tool program on every file
with merge conflicts.

OPTIONS
-------
-t <tool>::
--tool=<tool>::
	Use the merge resolution program specified by <tool>.
	Valid merge tools are:
	kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge,
	diffuse, tortoisemerge, opendiff, p4merge and araxis.
+
If a merge resolution program is not specified, 'git mergetool'
will use the configuration variable `merge.tool`.  If the
configuration variable `merge.tool` is not set, 'git mergetool'
will pick a suitable default.
+
You can explicitly provide a full path to the tool by setting the
configuration variable `mergetool.<tool>.path`. For example, you
can configure the absolute path to kdiff3 by setting
`mergetool.kdiff3.path`. Otherwise, 'git mergetool' assumes the
tool is available in PATH.
+
Instead of running one of the known merge tool programs,
'git mergetool' can be customized to run an alternative program
by specifying the command line to invoke in a configuration
variable `mergetool.<tool>.cmd`.
+
When 'git mergetool' is invoked with this tool (either through the
`-t` or `--tool` option or the `merge.tool` configuration
variable) the configured command line will be invoked with `$BASE`
set to the name of a temporary file containing the common base for
the merge, if available; `$LOCAL` set to the name of a temporary
file containing the contents of the file on the current branch;
`$REMOTE` set to the name of a temporary file containing the
contents of the file to be merged, and `$MERGED` set to the name
of the file to which the merge tool should write the result of the
merge resolution.
+
If the custom merge tool correctly indicates the success of a
merge resolution with its exit code, then the configuration
variable `mergetool.<tool>.trustExitCode` can be set to `true`.
Otherwise, 'git mergetool' will prompt the user to indicate the
success of the resolution after the custom tool has exited.

-y::
--no-prompt::
	Don't prompt before each invocation of the merge resolution
	program.

--prompt::
	Prompt before each invocation of the merge resolution program.
	This is the default behaviour; the option is provided to
	override any configuration settings.

TEMPORARY FILES
---------------
`git mergetool` creates `*.orig` backup files while resolving merges.
These are safe to remove once a file has been merged and its
`git mergetool` session has completed.

Setting the `mergetool.keepBackup` configuration variable to `false`
causes `git mergetool` to automatically remove the backup as files
are successfully merged.

Author
------
Written by Theodore Y Ts'o <tytso@mit.edu>

Documentation
--------------
Documentation by Theodore Y Ts'o.

GIT
---
Part of the linkgit:git[1] suite
