A Git commit object does not contain every file directly. It points to a tree that represents the repository root and to zero or more parent commits that connect it to history.
The commit's content determines its object ID, so changes to the tree, parents or metadata produce a different commit. Loading a commit snapshot may require traversing many tree and blob objects.
