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] [--root] [<common diff options>]
	      <tree-ish> [<tree-ish>] [<path>...]

DESCRIPTION
-----------
Compares the content and mode of the 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.txt[]

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

--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 `-v` flag.

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

include::pretty-options.txt[]

--no-commit-id::
	'git diff-tree' outputs a line with the commit ID when
	applicable.  This flag suppressed 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 the 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 is not shown, just like in any other
	"empty diff" case.

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


include::pretty-formats.txt[]
include::diff-format.txt[]

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