Skip to content
Snippets Groups Projects
git-diff-tree.txt 4.09 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jean-Noël Avila's avatar
    Jean-Noël Avila committed
    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>...]
    
    Jean-Noël Avila's avatar
    Jean-Noël Avila committed
    
    DESCRIPTION
    -----------
    
    Compare the content and mode of blobs found via two tree objects.
    
    Jean-Noël Avila's avatar
    Jean-Noël Avila committed
    
    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.
    
    Jean-Noël Avila's avatar
    Jean-Noël Avila committed
    
    -r::
    
    	Recurse into sub-trees.
    
    Jean-Noël Avila's avatar
    Jean-Noël Avila committed
    
    -t::
    
    	Show tree entry itself as well as subtrees.  Implies -r.
    
    Jean-Noël Avila's avatar
    Jean-Noël Avila committed
    
    --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.
    
    
    Jean-Noël Avila's avatar
    Jean-Noël Avila committed
    --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.
    
    Jean-Noël Avila's avatar
    Jean-Noël Avila committed
    
    -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 contents in the parents
    
    Jean-Noël Avila's avatar
    Jean-Noël Avila committed
    	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
    
    Jean-Noël Avila's avatar
    Jean-Noël Avila committed
    	"empty diff" case.
    
    
    Jean-Noël Avila's avatar
    Jean-Noël Avila committed
    --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).
    
    
    Jean-Noël Avila's avatar
    Jean-Noël Avila committed
    --always::
    	Show the commit itself and the commit log message even
    	if the diff itself is empty.
    
    
    include::pretty-formats.txt[]
    
    Jean-Noël Avila's avatar
    Jean-Noël Avila committed
    include::diff-format.txt[]
    
    GIT
    ---
    Part of the linkgit:git[1] suite