How can a git diff between a merge commit and one of its parents be empty?
<p>I am confused by this git commit log.
I think the relevant facts are in the screenshots below.
The screen shots are from source tree. But I get the same empty diffs if I run git diff on the command line.</p>

<p><img src="https://i.stack.imgur.com/mZeOE.png" alt="diff between 1 and 4"></p>

<p><img src="https://i.stack.imgur.com/AfePH.png" alt="diff between 1 and 2"></p>

<p>(If i single select commit 4 the diff is also empty.)</p>

<p>What I can't understand is why the diff is empty between commit 1 and 4. Or why commit 4 which is a merge doesn't contain file differences.</p>

<p>Commit 2 introduces file changes to the purple branch, and I can't see how these would not be part of the diff between 1 and 4. </p>

<p>(Commit 3 is a merge from a branch that is a historic version of the leftmost branch (the trunk). So I don't think it makes sense to have it there; if it was a merge from the current state of the trunk it would allow the merge 4 to be a fast forward, now it's just a merge of a subset of the trunk.)</p>

<p>edit:
The workflow is git flow. So the lines to the right are feature branches and the leftmost is a develop branch to which the feature branches are merged.</p>