The Git object model represents files and history as immutable objects. Blobs store file content, trees describe directory entries and commits point to a root tree and parent commits.
Each object is identified by a hash derived from its content. This provides integrity and deduplication, but reconstructing a checkout can require many related objects and storage lookups.
