From: Junio C Hamano
By default, "git-diff-tree --stdin" does not show differences for merge commits. With this flag, it shows - differences to that commit from all of its parents. + differences to that commit from all of its parents. See + also -c.
- These flags change the way a merge commit is displayed + This flag changes the way a merge commit is displayed (which means it is useful only when the command is given one <tree-ish>, or --stdin). It shows the differences - from each of the parents to the merge result - simultaneously, instead of showing pairwise diff between - a parent and the result one at a time, which -m option - output does. --cc further compresses the output by - omiting hunks that show differences from only one + from each of the parents to the merge result simultaneously + instead of showing pairwise diff between a parent and the + result one at a time (which is what the -m option does). + Furthermore, it lists only files which were modified + from all parents. +
++ This flag changes the way a merge commit patch is displayed, + in a similar way to the -c option. It implies the -c + and -p options and further compresses the patch output + by omitting hunks that show differences from only one parent, or show the same change from all but one parent for an Octopus merge. When this optimization makes all hunks disappear, the commit itself and the commit log - message is not shown, just like any other "empty diff" cases. + message is not shown, just like in any other "empty diff" case.