With merge conflicts in the work-tree, diff's exit-code seems inconsistent. I thought --quiet implied --exit-code
/others/foo$ git diff --quiet /others/foo$ echo $? 1
/others/foo$ git diff --exit-code diff --cc foo.txt index f3dc283,bea67fd..0000000
--- a/foo.txt +++ b/foo.txt /others/foo$ echo $? 0 /others/foo$ git diff --cc --quiet /others/foo$ echo $? 0 /others/foo$ git diff --cc --exit-code diff --cc foo.txt index f3dc283,bea67fd..0000000 --- a/foo.txt +++ b/foo.txt /others/foo$ echo $? 0