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 the 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 to 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`. This may be
	selected automatically using the configuration variable
	`difftool.guiDefault`. The `--no-gui` option can be used to
	override these settings. 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::
	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.

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

include::includes/cmd-config-section-rest.txt[]

include::config/difftool.txt[]

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
