The output format from "git-diff-cache", "git-diff-tree" and
"git-diff-files" is very similar.

These commands all compare two sets of things; what are
compared are different:

git-diff-cache <tree-ish>::
        compares the <tree-ish> and the files on the filesystem.

git-diff-cache --cached <tree-ish>::
        compares the <tree-ish> and the cache.

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 cache and the files on the filesystem.


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... N file4
delete         :100644 000000 1234567... 0000000... D file5
unmerged       :000000 000000 0000000... 0000000... U file6

That is, from the left to the right:

  (1) a colon.
  (2) mode for "src"; 000000 if creation or unmerged.
  (3) a space.
  (4) mode for "dst"; 000000 if deletion or unmerged.
  (5) a space.
  (6) sha1 for "src"; 0{40} if creation or unmerged.
  (7) a space.
  (8) sha1 for "dst"; 0{40} if creation, unmerged or "look at work tree".
  (9) a space.
 (10) status, followed by optional "score" number.
 (11) a tab or a NUL when '-z' option is used.
 (12) path for "src"
 (13) a tab or a NUL when '-z' option is used; only exists for C or R.
 (14) path for "dst"; only exists for C or R.
 (15) an LF or a NUL when '-z' option is used, to terminate the record.

<sha1> is shown as all 0's if new is a file on the filesystem
and it is out of sync with the cache.  Example:

  :100644 100644 5be4a4...... 000000...... M file.c

Generating patches with -p
--------------------------

When "git-diff-cache", "git-diff-tree", or "git-diff-files" are run
with a '-p' option, they do not produce the output described above;
instead they produce a patch file.

The patch generation can be customized at two levels.  This
customization also applies to "git-diff-helper".

1. When the environment variable 'GIT_EXTERNAL_DIFF' is not set,
   these commands internally invoke "diff" like this:

      diff -L a/<path> -L a/<path> -pu <old> <new>
+
For added files, `/dev/null` is used for <old>.  For removed
files, `/dev/null` is used for <new>
+
The "diff" formatting options can be customized via the
environment variable 'GIT_DIFF_OPTS'.  For example, if you
prefer context diff:

      GIT_DIFF_OPTS=-c git-diff-cache -p $(cat .git/HEAD)


2. When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
   program named by it is called, instead of the diff invocation
   described above.
+
For a path that is added, removed, or modified,
'GIT_EXTERNAL_DIFF' is called with 7 parameters:

     path old-file old-hex old-mode new-file new-hex new-mode
+
where:

     <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
		      contents of <old|ne>,
     <old|new>-hex:: are the 40-hexdigit SHA1 hashes,
     <old|new>-mode:: are the octal representation of the file modes.

+ 
The file parameters can point at the user's working file
(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
when a new file is added), or a temporary file (e.g. `old-file` in the
cache).  'GIT_EXTERNAL_DIFF' should not worry about unlinking the
temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.

For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
parameter, <path>.


Git specific extention to diff format
-------------------------------------

What -p option produces is slightly different from the
traditional diff format.

 (1) It is preceeded with a "git diff" header, that looks like
     this:

     diff --git a/file1 b/file2

     The a/ and b/ filenames are the same unless rename/copy is
     involved.  Especially, even for a creation or a deletion,
     /dev/null is _not_ used in place of a/ or b/ filename.

     When rename/copy is involved, file1 and file2 shows the
     name of the source file of the rename/copy and the name of
     the file that rename/copy produces, respectively.

 (2) It is followed by extended header lines that are one or
     more of:

       old mode <mode>
       new mode <mode>
       deleted file mode <mode>
       new file mode <mode>
       copy from <path>
       copy to <path>
       rename from <path>
       rename to <path>
       similarity index <number>
       dissimilarity index <number>
