Home Explore Blog CI



git

3rd chunk of `Documentation/git-diff.adoc`
be46c5099d95641000c4d6cbce87c0c7ab4519e64c0c3b5b0000000100000e29
 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.adoc[]

`-1`::
`--base`::
`-2`::
`--ours`::
`-3`::
`--theirs`::
	Compare the working tree with
+
--
 * the "base" version (stage #1) when using `-1` or `--base`,
 * "our branch" (stage #2) when using `-2` or `--ours`, or
 * "their branch" (stage #3) when using `-3` or `--theirs`.
--
+
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 _<path>_ 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.adoc[]

EXAMPLES
--------

Various ways to check your working tree::
+
------------
$ git diff            <1>
$ git diff --cached   <2>
$ git diff HEAD       <3>
$ git diff AUTO_MERGE <4>
------------
+
<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`
<4> Changes in the working tree you've made to resolve textual
    conflicts so far.

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.

CONFIGURATION
-------------

include::includes/cmd-config-section-all.adoc[]

:git-diff: 1
include::config/diff.adoc[]

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

Title: Git Diff Command Documentation
Summary
The git diff command is used to compare changes between commits, trees, and files, with various options and syntax to view differences, limit output, and munge output, including comparisons with arbitrary commits, branches, and limiting diff output to specific paths or types of changes.