title: does git store diff information in commit objects?
body: <p>According to <a href="http://schacon.github.io/gitbook/1_the_git_object_model.html">this</a>:</p>
  
  <blockquote>
    <p>It is important to note that this is very different from most SCM 
        systems that you may be familiar with. Subversion, CVS, Perforce, 
        Mercurial and the like all use Delta Storage systems - they store 
        the differences between one commit and the next. Git does not do 
        this - it stores a snapshot of what all the files in your project 
        look like in this tree structure each time you commit. This is a 
        very important concept to understand when using Git.</p>
  </blockquote>
  
  <p>Yet when I run <code>git show $SHA1ofCommitObject</code>...</p>
  
  <pre><code>commit 4405aa474fff8247607d0bf599e054173da84113
  Author: Joe Smoe &lt;joe.smoe@example.com&gt;
  Date:   Tue May 1 08:48:21 2012 -0500
  
      First commit
  
  diff --git a/index.html b/index.html
  new file mode 100644
  index 0000000..de8b69b
  --- /dev/null
  +++ b/index.html
  @@ -0,0 +1 @@
  +&lt;h1&gt;Hello World!&lt;/h1&gt;
  diff --git a/interests/chess.html b/interests/chess.html
  new file mode 100644
  index 0000000..e5be7dd
  --- /dev/null
  +++ b/interests/chess.html
  @@ -0,0 +1 @@
  +Did you see on Slashdot that King's Gambit accepted is solved! &lt;a href="http://game
  </code></pre>
  
  <p>... it outputs the diff of the commit with the previous commits. I know that git doesn't store diffs in blob objects, but does it store diffs in commit objects? Or is <code>git show</code> dynamically calculating the diff?</p>