A Git tree object maps directory entries to other objects. File entries reference blobs, while directory entries reference additional trees, forming a hierarchy rooted at a commit.
Trees are immutable and content-addressed. A change to one file produces new objects along the affected path while unchanged subtrees can be reused.
