git-difftool(1)
===============

NAME
----
git-difftool - Show changes using common diff tools

SYNOPSIS
--------
'git difftool' [--tool=<tool>] [-y|--no-prompt|--prompt] [<'git diff' options>]

DESCRIPTION
-----------
'git-difftool' is a git command that allows you to compare and edit files
between revisions using common diff tools.  'git difftool' is a frontend
to 'git-diff' and accepts the same options and arguments.

OPTIONS
-------
-y::
--no-prompt::
	Do not prompt before launching a diff tool.

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

-t <tool>::
--tool=<tool>::
	Use the diff tool specified by <tool>.
	Valid merge tools are:
	kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff,
	ecmerge, diffuse, opendiff and araxis.
+
If a diff tool is not specified, 'git-difftool'
will use the configuration variable `diff.tool`.  If the
configuration variable `diff.tool` is not set, 'git-difftool'
will pick a suitable default.
+
You can explicitly provide a full path to the tool by setting the
configuration variable `difftool.<tool>.path`. For example, you
can configure the absolute path to kdiff3 by setting
`difftool.kdiff3.path`. Otherwise, 'git-difftool' assumes the
tool is available in PATH.
+
Instead of running one of the known diff tools,
'git-difftool' can be customized to run an alternative program
by specifying the command line to invoke in a configuration
variable `difftool.<tool>.cmd`.
+
When 'git-difftool' is invoked with this tool (either through the
`-t` or `--tool` option or the `diff.tool` configuration variable)
the configured command line will be invoked with the following
variables available: `$LOCAL` is set to the name of the temporary
file containing the contents of the diff pre-image and `$REMOTE`
is set to the name of the temporary file containing the contents
of the diff post-image.  `$BASE` is provided for compatibility
with custom merge tool commands and has the same value as `$LOCAL`.

See linkgit:git-diff[1] for the full list of supported options.

CONFIG VARIABLES
----------------
'git-difftool' falls back to 'git-mergetool' config variables when the
difftool equivalents have not been defined.

diff.tool::
	The default diff tool to use.

difftool.<tool>.path::
	Override the path for the given tool.  This is useful in case
	your tool is not in the PATH.

difftool.<tool>.cmd::
	Specify the command to invoke the specified diff tool.
+
See the `--tool=<tool>` option above for more details.

difftool.prompt::
	Prompt before each invocation of the diff tool.

SEE ALSO
--------
linkgit:git-diff[1]::
	 Show changes between commits, commit and working tree, etc

linkgit:git-mergetool[1]::
	Run merge conflict resolution tools to resolve merge conflicts

linkgit:git-config[1]::
	 Get and set repository or global options


AUTHOR
------
Written by David Aguilar <davvid@gmail.com>.

Documentation
--------------
Documentation by David Aguilar and the git-list <git@vger.kernel.org>.

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