]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-diff.txt
Merge branch 'jc/leftright'
[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--------
e697e4cd 11'git-diff' [ --diff-options ] <tree-ish>{0,2} [--] [<path>...]
7fc9d69f
JH
12
13DESCRIPTION
14-----------
cfc01c03
ML
15Show changes between two trees, a tree and the working tree, a
16tree and the index file, or the index file and the working tree.
35ef3a4c 17
f5e6b89b 18'git-diff' [--options] [--] [<path>...]::
dfa2f22f 19
f5e6b89b
JH
20 This form is to view the changes you made relative to
21 the index (staging area for the next commit). In other
22 words, the differences are what you _could_ tell git to
23 further add to the index but you still haven't. You can
24 stage these changes by using gitlink:git-add[1].
25
26'git-diff' [--options] --cached [<commit>] [--] [<path>...]::
27
28 This form is to view the changes you staged for the next
29 commit relative to the named <tree-ish>. Typically you
30 would want comparison with the latest commit, so if you
31 do not give <commit>, it defaults to HEAD.
32
e697e4cd 33'git-diff' [--options] <commit> [--] [<path>...]::
f5e6b89b
JH
34
35 This form is to view the changes you have in your
36 working tree relative to the named <commit>. You can
37 use HEAD to compare it with the latest commit, or a
38 branch name to compare with the tip of a different
39 branch.
40
e697e4cd 41'git-diff' [--options] <commit> <commit> [--] [<path>...]::
f5e6b89b
JH
42
43 This form is to view the changes between two <commit>,
44 for example, tips of two branches.
45
46Just in case if you are doing something exotic, it should be
47noted that all of the <commit> in the above description can be
48any <tree-ish>.
dfa2f22f 49
7fc9d69f
JH
50
51OPTIONS
52-------
f5e6b89b 53include::diff-options.txt[]
35ef3a4c
JH
54
55<path>...::
f5e6b89b
JH
56 The <paths> parameters, when given, are used to limit
57 the diff to the named paths (you can give directory
58 names and get diff for all files under them).
7fc9d69f
JH
59
60
803f498c
JH
61EXAMPLES
62--------
63
64Various ways to check your working tree::
65+
66------------
48aeecdc 67$ git diff <1>
f2dd1c9a 68$ git diff --cached <2>
48aeecdc
SE
69$ git diff HEAD <3>
70------------
71+
f5e6b89b 72<1> changes in the working tree not yet staged for the next commit.
803f498c
JH
73<2> changes between the index and your last commit; what you
74would be committing if you run "git commit" without "-a" option.
75<3> changes in the working tree since your last commit; what you
76would be committing if you run "git commit -a"
803f498c
JH
77
78Comparing with arbitrary commits::
79+
80------------
48aeecdc
SE
81$ git diff test <1>
82$ git diff HEAD -- ./test <2>
83$ git diff HEAD^ HEAD <3>
84------------
85+
803f498c
JH
86<1> instead of using the tip of the current branch, compare with the
87tip of "test" branch.
88<2> instead of comparing with the tip of "test" branch, compare with
89438677 89the tip of the current branch, but limit the comparison to the
803f498c
JH
90file "test".
91<3> compare the version before the last commit and the last commit.
803f498c
JH
92
93
94Limiting the diff output::
95+
96------------
48aeecdc
SE
97$ git diff --diff-filter=MRC <1>
98$ git diff --name-status -r <2>
99$ git diff arch/i386 include/asm-i386 <3>
100------------
101+
803f498c
JH
102<1> show only modification, rename and copy, but not addition
103nor deletion.
104<2> show only names and the nature of change, but not actual
105diff output. --name-status disables usual patch generation
abda1ef5 106which in turn also disables recursive behavior, so without -r
803f498c
JH
107you would only see the directory name if there is a change in a
108file in a subdirectory.
109<3> limit diff output to named subtrees.
803f498c
JH
110
111Munging the diff output::
112+
113------------
48aeecdc
SE
114$ git diff --find-copies-harder -B -C <1>
115$ git diff -R <2>
116------------
117+
803f498c
JH
118<1> spend extra cycles to find renames, copies and complete
119rewrites (very expensive).
120<2> output diff in reverse.
803f498c
JH
121
122
7fc9d69f
JH
123Author
124------
125Written by Linus Torvalds <torvalds@osdl.org>
126
127Documentation
128--------------
129Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
130
131GIT
132---
a7154e91 133Part of the gitlink:git[7] suite
7fc9d69f 134