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

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

SYNOPSIS
--------
[verse]
'git mergetool' [--tool=<tool>] [-y | --[no-]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 (skipping those without
conflicts).  Specifying a directory will include all unresolved files in
that path.  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 values include emerge, gvimdiff, kdiff3,
	meld, vimdiff, and tortoisemerge. Run `git mergetool --tool-help`
	for the list of valid <tool> settings.
+
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.

--tool-help::
	Print a list of merge tools that may be used with `--tool`.

-y::
--no-prompt::
	Don't prompt before each invocation of the merge resolution
	program.
	This is the default if the merge resolution program is
	explicitly specified with the `--tool` option or with the
	`merge.tool` configuration variable.

--prompt::
	Prompt before each invocation of the merge resolution program
	to give the user a chance to skip the path.

-g::
--gui::
	When 'git-mergetool' is invoked with the `-g` or `--gui` option
	the default merge tool will be read from the configured
	`merge.guitool` variable instead of `merge.tool`. If
	`merge.guitool` is not set, we will fallback to the tool
	configured under `merge.tool`.

--no-gui::
	This overrides a previous `-g` or `--gui` setting and reads the
	default merge tool will be read from the configured `merge.tool`
	variable.

-O<orderfile>::
	Process files in the order specified in the
	<orderfile>, which has one shell glob pattern per line.
	This overrides the `diff.orderFile` configuration variable
	(see linkgit:git-config[1]).  To cancel `diff.orderFile`,
	use `-O/dev/null`.

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.

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