The machinery under the porcelain — the four object types, the ref database, the index file, packfiles and garbage collection, and the hooks that fire at each lifecycle point.
5 topics
This chapter goes under the commands to the data structures they manipulate. Once you can read Git's object database with git cat-file, resolve a ref with git rev-parse, and inspect the index with git ls-files --stage, the porcelain stops being a black box — every command becomes an obvious operation on blobs, trees, commits, refs, and the staging file.
The five topics build on each other: the object model is the storage, refs are the names into it, the index is the proposed next commit, packfiles and GC keep the store compact, and hooks run scripts at each point in the lifecycle. This is the deepest layer of Git, and it is where the confident debugging comes from.
Git's object model — a ref points at a commit, which points at a tree, which points at blobs