From this picture, a commit is a pointer to the root tree which is a pointer to other trees and blobs. But what is a proper view of the index?
Questions:
Is it a similar tree-ish with folder structures or just a flat view of blobs?
If the index is a tree-ish, is there much difference between a commit and the index?
Does the index look more like a full snapshot or a diff?
Same answer as this question: Decoding Git index file using C#
The Git index file format is described here: http://git.kernel.org/?p=git/git.git;a=blob;f=Documentation/technical/index-format.txt;hb=HEAD