Raw output format
-----------------

The raw output format from `git-diff-index`, `git-diff-tree`,
`git-diff-files` and `git diff --raw` are very similar.

These commands all compare two sets of things; what is
compared differs:

`git-diff-index <tree-ish>`::
	compares the _<tree-ish>_ and the files on the filesystem.

`git-diff-index --cached <tree-ish>`::
	compares the _<tree-ish>_ and the index.

`git-diff-tree [-r] <tree-ish-1> <tree-ish-2> [<pattern>...]`::
        compares the trees named by the two arguments.

`git-diff-files [<pattern>...]`::
        compares the index and the files on the filesystem.

The `git-diff-tree` command begins its output by printing the hash of
what is being compared. After that, all the commands print one output
line per changed file.

An output line is formatted this way:

------------------------------------------------
in-place edit  :100644 100644 bcd1234 0123456 M file0
copy-edit      :100644 100644 abcd123 1234567 C68 file1 file2
rename-edit    :100644 100644 abcd123 1234567 R86 file1 file3
create         :000000 100644 0000000 1234567 A file4
delete         :100644 000000 1234567 0000000 D file5
unmerged       :000000 000000 0000000 0000000 U file6
------------------------------------------------

That is, from the left to the right:

. a colon.
. mode for "src"; 000000 if creation or unmerged.
. a space.
. mode for "dst"; 000000 if deletion or unmerged.
. a space.
. sha1 for "src"; 0\{40\} if creation or unmerged.
. a space.
. sha1 for "dst"; 0\{40\} if deletion, unmerged or "work tree out of sync with the index".
. a space.
. status, followed by optional "score" number.
. a tab or a NUL when `-z` option is used.
. path for "src"
. a tab or a NUL when `-z` option is used; only exists for C or R.
. path for "dst"; only exists for C or R.
. an LF or a NUL when `-z` option is used, to terminate the record.

Possible status letters are:

- `A`: addition of a file
- `C`: copy of a file into a new one
- `D`: deletion of a file
- `M`: modification of the contents or mode of a file
- `R`: renaming of a file
- `T`: change in the type of the file (regular file, symbolic link or submodule)
- `U`: file is unmerged (you must complete the merge before it can
  be committed)
- `X`: "unknown" change type (most probably a bug, please report it)

Status letters `C` and `R` are always followed by a score (denoting the
percentage of similarity between the source and target of the move or
copy).  Status letter `M` may be followed by a score (denoting the
percentage of dissimilarity) for file rewrites.

The sha1 for "dst" is shown as all 0's if a file on the filesystem
is out of sync with the index.

Example:

------------------------------------------------
:100644 100644 5be4a4a 0000000 M file.c
------------------------------------------------

Without the `-z` option, pathnames with "unusual" characters are
quoted as explained for the configuration variable `core.quotePath`
(see linkgit:git-config[1]).  Using `-z` the filename is output
verbatim and the line is terminated by a NUL byte.

diff format for merges
----------------------

`git-diff-tree`, `git-diff-files` and `git-diff --raw`
can take `-c` or `--cc` option
to generate diff output also for merge commits.  The output differs
from the format described above in the following way:

. there is a colon for each parent
. there are more "src" modes and "src" sha1
. status is concatenated status characters for each parent
. no optional "score" number
. tab-separated pathname(s) of the file

For `-c` and `--cc`, only the destination or final path is shown even
if the file was renamed on any side of history.  With
`--combined-all-paths`, the name of the path in each parent is shown
followed by the name of the path in the merge commit.

Examples for `-c` and `--cc` without `--combined-all-paths`:

------------------------------------------------
::100644 100644 100644 fabadb8 cc95eb0 4866510 MM	desc.c
::100755 100755 100755 52b7a2d 6d1ac04 d2ac7d7 RM	bar.sh
::100644 100644 100644 e07d6c5 9042e82 ee91881 RR	phooey.c
------------------------------------------------

Examples when `--combined-all-paths` added to either `-c` or `--cc`:

------------------------------------------------
::100644 100644 100644 fabadb8 cc95eb0 4866510 MM	desc.c	desc.c	desc.c
::100755 100755 100755 52b7a2d 6d1ac04 d2ac7d7 RM	foo.sh	bar.sh	bar.sh
::100644 100644 100644 e07d6c5 9042e82 ee91881 RR	fooey.c	fuey.c	phooey.c
------------------------------------------------

Note that 'combined diff' lists only files which were modified from
all parents.


include::diff-generate-patch.adoc[]


other diff formats
------------------

The `--summary` option describes newly added, deleted, renamed and
copied files.  The `--stat` option adds `diffstat`(1) graph to the
output.  These options can be combined with other options, such as
`-p`, and are meant for human consumption.

When showing a change that involves a rename or a copy, `--stat` output
formats the pathnames compactly by combining common prefix and suffix of
the pathnames.  For example, a change that moves `arch/i386/Makefile` to
`arch/x86/Makefile` while modifying 4 lines will be shown like this:

------------------------------------
arch/{i386 => x86}/Makefile    |   4 +--
------------------------------------

The `--numstat` option gives the diffstat(1) information but is designed
for easier machine consumption.  An entry in `--numstat` output looks
like this:

----------------------------------------
1	2	README
3	1	arch/{i386 => x86}/Makefile
----------------------------------------

That is, from left to right:

. the number of added lines;
. a tab;
. the number of deleted lines;
. a tab;
. pathname (possibly with rename/copy information);
. a newline.

When `-z` output option is in effect, the output is formatted this way:

----------------------------------------
1	2	README NUL
3	1	NUL arch/i386/Makefile NUL arch/x86/Makefile NUL
----------------------------------------

That is:

. the number of added lines;
. a tab;
. the number of deleted lines;
. a tab;
. a NUL (only exists if renamed/copied);
. pathname in preimage;
. a NUL (only exists if renamed/copied);
. pathname in postimage (only exists if renamed/copied);
. a NUL.

The extra `NUL` before the preimage path in renamed case is to allow
scripts that read the output to tell if the current record being read is
a single-path record or a rename/copy record without reading ahead.
After reading added and deleted lines, reading up to `NUL` would yield
the pathname, but if that is `NUL`, the record will show two paths.
