]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-diff.txt
Prepare for 2.12.3
[thirdparty/git.git] / Documentation / git-diff.txt
CommitLineData
215a7ad1
JH
1git-diff(1)
2===========
7fc9d69f
JH
3
4NAME
5----
7bd7f280 6git-diff - Show changes between commits, commit and working tree, etc
7fc9d69f
JH
7
8
9SYNOPSIS
10--------
49bd56a5
JK
11[verse]
12'git diff' [options] [<commit>] [--] [<path>...]
13'git diff' [options] --cached [<commit>] [--] [<path>...]
14'git diff' [options] <commit> <commit> [--] [<path>...]
bd52900d 15'git diff' [options] <blob> <blob>
49bd56a5 16'git diff' [options] [--no-index] [--] <path> <path>
7fc9d69f
JH
17
18DESCRIPTION
19-----------
49bd56a5 20Show changes between the working tree and the index or a tree, changes
d7747bd5
KB
21between the index and a tree, changes between two trees, changes between
22two blob objects, or changes between two files on disk.
35ef3a4c 23
b1889c36 24'git diff' [--options] [--] [<path>...]::
dfa2f22f 25
f5e6b89b
JH
26 This form is to view the changes you made relative to
27 the index (staging area for the next commit). In other
2de9b711 28 words, the differences are what you _could_ tell Git to
f5e6b89b 29 further add to the index but you still haven't. You can
5162e697 30 stage these changes by using linkgit:git-add[1].
286bc123
JH
31
32'git diff' --no-index [--options] [--] [<path>...]::
33
34 This form is to compare the given two paths on the
35 filesystem. You can omit the `--no-index` option when
36 running the command in a working tree controlled by Git and
37 at least one of the paths points outside the working tree,
38 or when running the command outside a working tree
39 controlled by Git.
d516c2d1 40
b1889c36 41'git diff' [--options] --cached [<commit>] [--] [<path>...]::
f5e6b89b
JH
42
43 This form is to view the changes you staged for the next
ce054545 44 commit relative to the named <commit>. Typically you
f5e6b89b
JH
45 would want comparison with the latest commit, so if you
46 do not give <commit>, it defaults to HEAD.
5fe8f49b 47 If HEAD does not exist (e.g. unborn branches) and
a2b7a3b3 48 <commit> is not given, it shows all staged changes.
2baf1850 49 --staged is a synonym of --cached.
f5e6b89b 50
b1889c36 51'git diff' [--options] <commit> [--] [<path>...]::
f5e6b89b
JH
52
53 This form is to view the changes you have in your
54 working tree relative to the named <commit>. You can
55 use HEAD to compare it with the latest commit, or a
56 branch name to compare with the tip of a different
57 branch.
58
b1889c36 59'git diff' [--options] <commit> <commit> [--] [<path>...]::
f5e6b89b 60
2b9232cc
MH
61 This is to view the changes between two arbitrary
62 <commit>.
63
b1889c36 64'git diff' [--options] <commit>..<commit> [--] [<path>...]::
2b9232cc
MH
65
66 This is synonymous to the previous form. If <commit> on
67 one side is omitted, it will have the same effect as
68 using HEAD instead.
69
b1889c36 70'git diff' [--options] <commit>\...<commit> [--] [<path>...]::
2b9232cc
MH
71
72 This form is to view the changes on the branch containing
73 and up to the second <commit>, starting at a common ancestor
b1889c36
JN
74 of both <commit>. "git diff A\...B" is equivalent to
75 "git diff $(git-merge-base A B) B". You can omit any one
2b9232cc 76 of <commit>, which has the same effect as using HEAD instead.
f5e6b89b
JH
77
78Just in case if you are doing something exotic, it should be
0c783f66 79noted that all of the <commit> in the above description, except
ed84e6d5 80in the last two forms that use ".." notations, can be any
bd52900d 81<tree>.
dfa2f22f 82
41a5564e 83For a more complete list of ways to spell <commit>, see
9d83e382 84"SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].
2b9232cc
MH
85However, "diff" is about comparing two _endpoints_, not ranges,
86and the range notations ("<commit>..<commit>" and
0c783f66 87"<commit>\...<commit>") do not mean a range as defined in the
9d83e382 88"SPECIFYING RANGES" section in linkgit:gitrevisions[7].
7fc9d69f 89
d7747bd5
KB
90'git diff' [options] <blob> <blob>::
91
92 This form is to view the differences between the raw
93 contents of two blob objects.
94
7fc9d69f
JH
95OPTIONS
96-------
c1a95fa6 97:git-diff: 1
f5e6b89b 98include::diff-options.txt[]
35ef3a4c
JH
99
100<path>...::
f5e6b89b
JH
101 The <paths> parameters, when given, are used to limit
102 the diff to the named paths (you can give directory
103 names and get diff for all files under them).
7fc9d69f 104
f552e51e 105
9e6c7230 106include::diff-format.txt[]
7fc9d69f 107
803f498c
JH
108EXAMPLES
109--------
110
111Various ways to check your working tree::
112+
113------------
48aeecdc 114$ git diff <1>
f2dd1c9a 115$ git diff --cached <2>
48aeecdc
SE
116$ git diff HEAD <3>
117------------
118+
434e6ef8
SH
119<1> Changes in the working tree not yet staged for the next commit.
120<2> Changes between the index and your last commit; what you
803f498c 121would be committing if you run "git commit" without "-a" option.
434e6ef8 122<3> Changes in the working tree since your last commit; what you
803f498c 123would be committing if you run "git commit -a"
803f498c
JH
124
125Comparing with arbitrary commits::
126+
127------------
48aeecdc
SE
128$ git diff test <1>
129$ git diff HEAD -- ./test <2>
130$ git diff HEAD^ HEAD <3>
131------------
132+
434e6ef8 133<1> Instead of using the tip of the current branch, compare with the
803f498c 134tip of "test" branch.
434e6ef8 135<2> Instead of comparing with the tip of "test" branch, compare with
89438677 136the tip of the current branch, but limit the comparison to the
803f498c 137file "test".
434e6ef8 138<3> Compare the version before the last commit and the last commit.
803f498c 139
2b9232cc
MH
140Comparing branches::
141+
142------------
143$ git diff topic master <1>
144$ git diff topic..master <2>
145$ git diff topic...master <3>
146------------
147+
148<1> Changes between the tips of the topic and the master branches.
149<2> Same as above.
06ada152 150<3> Changes that occurred on the master branch since when the topic
2b9232cc 151branch was started off it.
803f498c
JH
152
153Limiting the diff output::
154+
155------------
48aeecdc 156$ git diff --diff-filter=MRC <1>
90ae710e 157$ git diff --name-status <2>
48aeecdc
SE
158$ git diff arch/i386 include/asm-i386 <3>
159------------
160+
a58088ab
JL
161<1> Show only modification, rename, and copy, but not addition
162or deletion.
434e6ef8 163<2> Show only names and the nature of change, but not actual
90ae710e 164diff output.
434e6ef8 165<3> Limit diff output to named subtrees.
803f498c
JH
166
167Munging the diff output::
168+
169------------
48aeecdc
SE
170$ git diff --find-copies-harder -B -C <1>
171$ git diff -R <2>
172------------
173+
434e6ef8 174<1> Spend extra cycles to find renames, copies and complete
803f498c 175rewrites (very expensive).
434e6ef8 176<2> Output diff in reverse.
803f498c 177
3bdfd443
DA
178SEE ALSO
179--------
b77134b0
JN
180diff(1),
181linkgit:git-difftool[1],
182linkgit:git-log[1],
183linkgit:gitdiffcore[7],
184linkgit:git-format-patch[1],
185linkgit:git-apply[1]
803f498c 186
7fc9d69f
JH
187GIT
188---
9e1f0a85 189Part of the linkgit:git[1] suite