path: root/Documentation/diff-format.txt
diff options
authorJunio C Hamano <>2006-01-28 10:19:22 (GMT)
committerJunio C Hamano <>2006-01-28 10:26:30 (GMT)
commit34801cab72e8262d2585f72f15b62a397f0c6c1a (patch)
treef2d70aecfac97534deb3ac925c45df3819986e66 /Documentation/diff-format.txt
parent939aabbf7d108b5d6830bf5cd89abc910cc9ff27 (diff)
Documentation: diff -c/--cc
Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'Documentation/diff-format.txt')
1 files changed, 49 insertions, 0 deletions
diff --git a/Documentation/diff-format.txt b/Documentation/diff-format.txt
index 0398b40..617d8f5 100644
--- a/Documentation/diff-format.txt
+++ b/Documentation/diff-format.txt
@@ -146,3 +146,52 @@ the file that rename/copy produces, respectively.
3. TAB, LF, and backslash characters in pathnames are
represented as `\t`, `\n`, and `\\`, respectively.
+combined diff format
+git-diff-tree and git-diff-files can take '-c' or '--cc' option
+to produce 'combined diff', which looks like this:
+diff --combined describe.c
+@@@ +98,7 @@@
+ return (a_date > b_date) ? -1 : (a_date == b_date) ? 0 : 1;
+ }
+- static void describe(char *arg)
+ -static void describe(struct commit *cmit, int last_one)
+++static void describe(char *arg, int last_one)
+ {
+ + unsigned char sha1[20];
+ + struct commit *cmit;
+Unlike the traditional 'unified' diff format, which shows two
+files A and B with a single column that has `-` (minus --
+appears in A but removed in B), `+` (plus -- missing in A but
+added to B), or ` ` (space -- unchanged) prefix, this format
+compares two or more files file1, file2,... with one file X, and
+shows how X differs from each of fileN. One column for each of
+fileN is prepended to the output line to note how X's line is
+different from it.
+A `-` character in the column N means that the line appears in
+fileN but it does not appear in the last file. A `+` character
+in the column N means that the line appears in the last file,
+and fileN does not have that line.
+In the above example output, the function signature was changed
+from both files (hence two `-` removals from both file1 and
+file2, plus `++` to mean one line that was added does not appear
+in either file1 nor file2). Also two other lines are the same
+from file1 but do not appear in file2 (hence prefixed with ` +`).
+When shown by `git diff-tree -c`, it compares the parents of a
+merge commit with the merge result (i.e. file1..fileN are the
+parents). When shown by `git diff-files -c`, it compares the
+two unresolved merge parents with the working tree file
+(i.e. file1 is stage 2 aka "our version", file2 is stage 3 aka
+"their version").