]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-diff-tree.txt
Merge branch 'en/fetch-negotiation-default-fix'
[thirdparty/git.git] / Documentation / git-diff-tree.txt
CommitLineData
2cf565c5
DG
1git-diff-tree(1)
2================
2cf565c5
DG
3
4NAME
5----
6git-diff-tree - Compares the content and mode of blobs found via two tree objects
7
8
9SYNOPSIS
10--------
353ce815 11[verse]
b1889c36 12'git diff-tree' [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty]
3d09c228 13 [-t] [-r] [-c | --cc] [--combined-all-paths] [--root] [--merge-base]
133db54d 14 [<common-diff-options>] <tree-ish> [<tree-ish>] [<path>...]
2cf565c5
DG
15
16DESCRIPTION
17-----------
18Compares the content and mode of the blobs found via two tree objects.
19
ff8489cb
RW
20If there is only one <tree-ish> given, the commit is compared with its parents
21(see --stdin below).
22
0b444cdb 23Note that 'git diff-tree' can use the tree encapsulated in a commit object.
2cf565c5
DG
24
25OPTIONS
26-------
dda2d79a
JH
27include::diff-options.txt[]
28
2cf565c5
DG
29<tree-ish>::
30 The id of a tree object.
31
232b75ab 32<path>...::
2cf565c5 33 If provided, the results are limited to a subset of files
9fce19a4 34 matching one of the provided pathspecs.
2cf565c5 35
50b8e355
CS
36-r::
37 recurse into sub-trees
38
4cae1a96
JH
39-t::
40 show tree entry itself as well as subtrees. Implies -r.
41
0746b620 42--root::
bcf9626a 43 When `--root` is specified the initial commit will be shown as a big
0746b620
TG
44 creation event. This is equivalent to a diff against the NULL tree.
45
3d09c228
DL
46--merge-base::
47 Instead of comparing the <tree-ish>s directly, use the merge
48 base between the two <tree-ish>s as the "before" side. There
49 must be two <tree-ish>s given and they must both be commits.
50
2cf565c5 51--stdin::
bcf9626a 52 When `--stdin` is specified, the command does not take
2cf565c5 53 <tree-ish> arguments from the command line. Instead, it
140b378d
KW
54 reads lines containing either two <tree>, one <commit>, or a
55 list of <commit> from its standard input. (Use a single space
56 as separator.)
2cf565c5 57+
140b378d 58When two trees are given, it compares the first tree with the second.
7cccfaa2
KW
59When a single commit is given, it compares the commit with its
60parents. The remaining commits, when given, are used as if they are
eabbc99a 61parents of the first commit.
7cccfaa2 62+
140b378d
KW
63When comparing two trees, the ID of both trees (separated by a space
64and terminated by a newline) is printed before the difference. When
65comparing commits, the ID of the first (or only) commit, followed by a
66newline, is printed.
7cccfaa2 67+
5832d1a9 68The following flags further affect the behavior when comparing
140b378d 69commits (but not trees).
2cf565c5
DG
70
71-m::
0b444cdb 72 By default, 'git diff-tree --stdin' does not show
2cf565c5 73 differences for merge commits. With this flag, it shows
a13ba129 74 differences to that commit from all of its parents. See
23f8239b 75 also `-c`.
2cf565c5
DG
76
77-s::
0b444cdb 78 By default, 'git diff-tree --stdin' shows differences,
23f8239b
MM
79 either in machine-readable form (without `-p`) or in patch
80 form (with `-p`). This output can be suppressed. It is
81 only useful with `-v` flag.
2cf565c5
DG
82
83-v::
0b444cdb 84 This flag causes 'git diff-tree --stdin' to also show
2cf565c5
DG
85 the commit message before the differences.
86
331b51d2 87include::pretty-options.txt[]
232b75ab 88
601c978c 89--no-commit-id::
0b444cdb 90 'git diff-tree' outputs a line with the commit ID when
601c978c
PR
91 applicable. This flag suppressed the commit ID output.
92
a13ba129
PB
93-c::
94 This flag changes the way a merge commit is displayed
34801cab 95 (which means it is useful only when the command is given
bcf9626a 96 one <tree-ish>, or `--stdin`). It shows the differences
a13ba129
PB
97 from each of the parents to the merge result simultaneously
98 instead of showing pairwise diff between a parent and the
23f8239b 99 result one at a time (which is what the `-m` option does).
a13ba129
PB
100 Furthermore, it lists only files which were modified
101 from all parents.
102
de5f2bf3 103--cc::
a13ba129 104 This flag changes the way a merge commit patch is displayed,
23f8239b
MM
105 in a similar way to the `-c` option. It implies the `-c`
106 and `-p` options and further compresses the patch output
ea3d988d
JH
107 by omitting uninteresting hunks whose the contents in the parents
108 have only two variants and the merge result picks one of them
109 without modification. When all hunks are uninteresting, the commit
110 itself and the commit log message is not shown, just like in any other
111 "empty diff" case.
34801cab 112
d76ce4f7
EN
113--combined-all-paths::
114 This flag causes combined diffs (used for merge commits) to
115 list the name of the file from all parents. It thus only has
116 effect when -c or --cc are specified, and is likely only
117 useful if filename changes are detected (i.e. when either
118 rename or copy detection have been requested).
119
3904848c
PB
120--always::
121 Show the commit itself and the commit log message even
122 if the diff itself is empty.
123
2cf565c5 124
331b51d2 125include::pretty-formats.txt[]
98228427 126
2cf565c5
DG
127include::diff-format.txt[]
128
2cf565c5
DG
129GIT
130---
9e1f0a85 131Part of the linkgit:git[1] suite