git-diff(1)
===========

NAME
----
git-diff - Show changes between commits, commit and working tree, etc


SYNOPSIS
--------
'git-diff' [ --diff-options ] <commit>{0,2} [--] [<path>...]

DESCRIPTION
-----------
Show changes between two trees, a tree and the working tree, a
tree and the index file, or the index file and the working tree.

'git-diff' [--options] [--] [<path>...]::

	This form is to view the changes you made relative to
	the index (staging area for the next commit).  In other
	words, the differences are what you _could_ tell git to
	further add to the index but you still haven't.  You can
	stage these changes by using gitlink:git-add[1].

'git-diff' [--options] --cached [<commit>] [--] [<path>...]::

	This form is to view the changes you staged for the next
	commit relative to the named <commit>.  Typically you
	would want comparison with the latest commit, so if you
	do not give <commit>, it defaults to HEAD.

'git-diff' [--options] <commit> [--] [<path>...]::

	This form is to view the changes you have in your
	working tree relative to the named <commit>.  You can
	use HEAD to compare it with the latest commit, or a
	branch name to compare with the tip of a different
	branch.

'git-diff' [--options] <commit> <commit> [--] [<path>...]::

	This form is to view the changes between two <commit>,
	for example, tips of two branches.

Just in case if you are doing something exotic, it should be
noted that all of the <commit> in the above description can be
any <tree-ish>.

For a more complete list of ways to spell <commit>, see
"SPECIFYING REVISIONS" section in gitlink:git-rev-parse[1].


OPTIONS
-------
include::diff-options.txt[]

<path>...::
	The <paths> parameters, when given, are used to limit
	the diff to the named paths (you can give directory
	names and get diff for all files under them).


EXAMPLES
--------

Various ways to check your working tree::
+
------------
$ git diff            <1>
$ git diff --cached   <2>
$ git diff HEAD       <3>
------------
+
<1> changes in the working tree not yet staged for the next commit.
<2> changes between the index and your last commit; what you
would be committing if you run "git commit" without "-a" option.
<3> changes in the working tree since your last commit; what you
would be committing if you run "git commit -a"

Comparing with arbitrary commits::
+
------------
$ git diff test            <1>
$ git diff HEAD -- ./test  <2>
$ git diff HEAD^ HEAD      <3>
------------
+
<1> instead of using the tip of the current branch, compare with the
tip of "test" branch.
<2> instead of comparing with the tip of "test" branch, compare with
the tip of the current branch, but limit the comparison to the
file "test".
<3> compare the version before the last commit and the last commit.


Limiting the diff output::
+
------------
$ git diff --diff-filter=MRC            <1>
$ git diff --name-status -r             <2>
$ git diff arch/i386 include/asm-i386   <3>
------------
+
<1> show only modification, rename and copy, but not addition
nor deletion.
<2> show only names and the nature of change, but not actual
diff output.  --name-status disables usual patch generation
which in turn also disables recursive behavior, so without -r
you would only see the directory name if there is a change in a
file in a subdirectory.
<3> limit diff output to named subtrees.

Munging the diff output::
+
------------
$ git diff --find-copies-harder -B -C  <1>
$ git diff -R                          <2>
------------
+
<1> spend extra cycles to find renames, copies and complete
rewrites (very expensive).
<2> output diff in reverse.


Author
------
Written by Linus Torvalds <torvalds@osdl.org>

Documentation
--------------
Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
Part of the gitlink:git[7] suite

