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

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

SYNOPSIS
--------
[synopsis]
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 _<file>_,
	the paths before it will move to the end and output.

`--skip-to=<file>`::
	Start showing the diff for _<file>_, 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`.

`--symlinks`::
`--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`::
`--gui`::
`--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.

`--trust-exit-code`::
`--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.adoc[]

include::config/difftool.adoc[]

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
