git-diff-tree(1)
================

NAME
----
git-diff-tree - Compares the content and mode of blobs found via two tree objects


SYNOPSIS
--------
[verse]
'git diff-tree' [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty]
	      [-t] [-r] [-c | --cc] [--combined-all-paths] [--root] [--merge-base]
	      [<common-diff-options>] <tree-ish> [<tree-ish>] [<path>...]

DESCRIPTION
-----------
Compare the content and mode of blobs found via two tree objects.

If there is only one <tree-ish> given, the commit is compared with its parents
(see --stdin below).

Note that 'git diff-tree' can use the tree encapsulated in a commit object.

OPTIONS
-------
include::diff-options.adoc[]

<tree-ish>::
	The id of a tree object.

<path>...::
	If provided, the results are limited to a subset of files
	matching one of the provided pathspecs.

-r::
	Recurse into sub-trees.

-t::
	Show tree entry itself as well as subtrees.  Implies -r.

--root::
	When `--root` is specified the initial commit will be shown as a big
	creation event. This is equivalent to a diff against the NULL tree.

--merge-base::
	Instead of comparing the <tree-ish>s directly, use the merge
	base between the two <tree-ish>s as the "before" side.  There
	must be two <tree-ish>s given and they must both be commits.

--stdin::
	When `--stdin` is specified, the command does not take
	<tree-ish> arguments from the command line.  Instead, it
	reads lines containing either two <tree>, one <commit>, or a
	list of <commit> from its standard input.  (Use a single space
	as separator.)
+
When two trees are given, it compares the first tree with the second.
When a single commit is given, it compares the commit with its
parents.  The remaining commits, when given, are used as if they are
parents of the first commit.
+
When comparing two trees, the ID of both trees (separated by a space
and terminated by a newline) is printed before the difference.  When
comparing commits, the ID of the first (or only) commit, followed by a
newline, is printed.
+
The following flags further affect the behavior when comparing
commits (but not trees).

-m::
	By default, 'git diff-tree --stdin' does not show
	differences for merge commits.  With this flag, it shows
	differences to that commit from all of its parents. See
	also `-c`.

-s::
	By default, 'git diff-tree --stdin' shows differences,
	either in machine-readable form (without `-p`) or in patch
	form (with `-p`).  This output can be suppressed.  It is
	only useful with the `-v` flag.

-v::
	This flag causes 'git diff-tree --stdin' to also show
	the commit message before the differences.

include::pretty-options.adoc[]

--no-commit-id::
	'git diff-tree' outputs a line with the commit ID when
	applicable.  This flag suppresses the commit ID output.

-c::
	This flag changes the way a merge commit is displayed
	(which means it is useful only when the command is given
	one <tree-ish>, or `--stdin`).  It shows the differences
	from each of the parents to the merge result simultaneously
	instead of showing pairwise diff between a parent and the
	result one at a time (which is what the `-m` option does).
	Furthermore, it lists only files which were modified
	from all parents.

--cc::
	This flag changes the way a merge commit patch is displayed,
	in a similar way to the `-c` option. It implies the `-c`
	and `-p` options and further compresses the patch output
	by omitting uninteresting hunks whose contents in the parents
	have only two variants and the merge result picks one of them
	without modification.  When all hunks are uninteresting, the commit
	itself and the commit log message are not shown, just like in any other
	"empty diff" case.

--combined-all-paths::
	This flag causes combined diffs (used for merge commits) to
	list the name of the file from all parents.  It thus only has
	effect when -c or --cc are specified, and is likely only
	useful if filename changes are detected (i.e. when either
	rename or copy detection have been requested).

--always::
	Show the commit itself and the commit log message even
	if the diff itself is empty.


include::pretty-formats.adoc[]

include::diff-format.adoc[]

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