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

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


SYNOPSIS
--------
[verse]
'git diff' [<options>] [<commit>] [--] [<path>...]
'git diff' [<options>] --cached [<commit>] [--] [<path>...]
'git diff' [<options>] <commit> [<commit>...] <commit> [--] [<path>...]
'git diff' [<options>] <commit>...<commit> [--] [<path>...]
'git diff' [<options>] <blob> <blob>
'git diff' [<options>] --no-index [--] <path> <path>

DESCRIPTION
-----------
Show changes between the working tree and the index or a tree, changes
between the index and a tree, changes between two trees, changes resulting
from a merge, changes between two blob objects, or changes between two
files on disk.

'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 linkgit:git-add[1].

'git diff' [<options>] --no-index [--] <path> <path>::

	This form is to compare the given two paths on the
	filesystem.  You can omit the `--no-index` option when
	running the command in a working tree controlled by Git and
	at least one of the paths points outside the working tree,
	or when running the command outside a working tree
	controlled by Git. This form implies `--exit-code`.

'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.
	If HEAD does not exist (e.g. unborn branches) and
	<commit> is not given, it shows all staged changes.
	--staged is a synonym of --cached.

'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 is to view the changes between two arbitrary
	<commit>.

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

	This form is to view the results of a merge commit.  The first
	listed <commit> must be the merge itself; the remaining two or
	more commits should be its parents.  A convenient way to produce
	the desired set of revisions is to use the `^@` suffix.
	For instance, if `master` names a merge commit, `git diff master
	master^@` gives the same combined diff as `git show master`.

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

	This is synonymous to the earlier form (without the `..`) for
	viewing the changes between two arbitrary <commit>.  If <commit> on
	one side is omitted, it will have the same effect as
	using HEAD instead.

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

	This form is to view the changes on the branch containing
	and up to the second <commit>, starting at a common ancestor
	of both <commit>.  `git diff A...B` is equivalent to
	`git diff $(git merge-base A B) B`.  You can omit any one
	of <commit>, which has the same effect as using HEAD instead.

Just in case you are doing something exotic, it should be
noted that all of the <commit> in the above description, except
in the last two forms that use `..` notations, can be any
<tree>.

For a more complete list of ways to spell <commit>, see
"SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].
However, "diff" is about comparing two _endpoints_, not ranges,
and the range notations (`<commit>..<commit>` and
`<commit>...<commit>`) do not mean a range as defined in the
"SPECIFYING RANGES" section in linkgit:gitrevisions[7].

'git diff' [<options>] <blob> <blob>::

	This form is to view the differences between the raw
	contents of two blob objects.

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

-1 --base::
-2 --ours::
-3 --theirs::
	Compare the working tree with the "base" version (stage #1),
	"our branch" (stage #2) or "their branch" (stage #3).  The
	index contains these stages only for unmerged entries i.e.
	while resolving conflicts.  See linkgit:git-read-tree[1]
	section "3-Way Merge" for detailed information.

-0::
	Omit diff output for unmerged entries and just show
	"Unmerged".  Can be used only when comparing the working tree
	with the index.

<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).


include::diff-format.txt[]

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.

Comparing branches::
+
------------
$ git diff topic master    <1>
$ git diff topic..master   <2>
$ git diff topic...master  <3>
------------
+
<1> Changes between the tips of the topic and the master branches.
<2> Same as above.
<3> Changes that occurred on the master branch since when the topic
    branch was started off it.

Limiting the diff output::
+
------------
$ git diff --diff-filter=MRC            <1>
$ git diff --name-status                <2>
$ git diff arch/i386 include/asm-i386   <3>
------------
+
<1> Show only modification, rename, and copy, but not addition
    or deletion.
<2> Show only names and the nature of change, but not actual
    diff output.
<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.

SEE ALSO
--------
diff(1),
linkgit:git-difftool[1],
linkgit:git-log[1],
linkgit:gitdiffcore[7],
linkgit:git-format-patch[1],
linkgit:git-apply[1],
linkgit:git-show[1]

GIT
---
Part of the linkgit:git[1] suite
