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

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


SYNOPSIS
--------
'git-diff' [ --diff-options ] <tree-ish>{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 <tree-ish>.  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>.


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

