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

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

SYNOPSIS
--------
[verse]
'git difftool' [<options>] [<commit> [<commit>]] [--] [<path>...]

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. See
linkgit:git-diff[1].

OPTIONS
-------
-d::
--dir-diff::
	Copy the modified files to a temporary location and perform
	a directory diff on them. This mode never prompts before
	launching the diff tool.

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

--rotate-to=<file>::
	Start showing the diff for the given path,
	the paths before it will move to end and output.

--skip-to=<file>::
	Start showing the diff for the given path, skipping all
	the paths before it.

-t <tool>::
--tool=<tool>::
	Use the diff tool specified by <tool>.  Valid values include
	emerge, kompare, meld, and vimdiff. Run `git difftool --tool-help`
	for the list of valid <tool> settings.
+
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.  `$MERGED` is the name of the file which is
being compared. `$BASE` is provided for compatibility
with custom merge tool commands and has the same value as `$MERGED`.

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

--[no-]symlinks::
	'git difftool''s default behavior is create symlinks to the
	working tree when run in `--dir-diff` mode and the right-hand
	side of the comparison yields the same content as the file in
	the working tree.
+
Specifying `--no-symlinks` instructs 'git difftool' to create copies
instead.  `--no-symlinks` is the default on Windows.

-x <command>::
--extcmd=<command>::
	Specify a custom command for viewing diffs.
	'git-difftool' ignores the configured defaults and runs
	`$command $LOCAL $REMOTE` when this option is specified.
	Additionally, `$BASE` is set in the environment.

-g::
--[no-]gui::
	When 'git-difftool' is invoked with the `-g` or `--gui` option
	the default diff tool will be read from the configured
	`diff.guitool` variable instead of `diff.tool`. The `--no-gui`
	option can be used to override this setting. If `diff.guitool`
	is not set, we will fallback in the order of `merge.guitool`,
	`diff.tool`, `merge.tool` until a tool is found.

--[no-]trust-exit-code::
	'git-difftool' invokes a diff tool individually on each file.
	Errors reported by the diff tool are ignored by default.
	Use `--trust-exit-code` to make 'git-difftool' exit when an
	invoked diff tool returns a non-zero exit code.
+
'git-difftool' will forward the exit code of the invoked tool when
`--trust-exit-code` is used.

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.

diff.guitool::
	The default diff tool to use when `--gui` is specified.

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.

difftool.trustExitCode::
	Exit difftool if the invoked diff tool returns a non-zero exit status.
+
See the `--trust-exit-code` option above for more details.

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

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