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 [--merge-base] [<commit>] [--] [<path>...]
'git diff' [<options>] [--merge-base] <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 [--merge-base] [<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.
+
If --merge-base is given, instead of using <commit>, use the merge base
of <commit> and HEAD.  `git diff --merge-base A` is equivalent to
`git diff $(git merge-base A 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>] [--merge-base] <commit> <commit> [--] [<path>...]::

	This is to view the changes between two arbitrary
	<commit>.
+
If --merge-base is given, use the merge base of the two commits for the
"before" side.  `git diff --merge-base A B` is equivalent to
`git diff $(git merge-base A B) B`.

'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 `--merge-base` case and 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
