Git stores the entire file for each modification to it
A simple repo with just one file, .gitignore and a couple of commits
Let's follow the commit tree backwards
Last commit object
First commit object
Let's see the contents of the tree
Tree object of first commit
Tree object of last commit
Let's look at the contents. Complete file is stored for each modification
I thought git cat-file
command intelligently applied the patch and showed me the complete file. But NO!
Git stores a header followed by the content of the file and then compresses it.
Checkout Pro Git Book