Git Internals
Git Internals Channel
Break Git internals into focused topics spanning the object database, refs and HEAD, commit graphs, and packfiles so the model stays practical.
Git Internals
Internals Topics
Break the old single internals guide into focused reads spanning the object model, refs, commit graphs, and storage internals.
Git Object Database
Understand blob, tree, commit, and tag objects, and why Git describes itself as a content-addressable object database.
Working Tree, Index, and Object Store
Separating the working tree, index, and object database is the clearest way to understand add, commit, restore, and reset.
Git References and HEAD
Put branches, tags, remote-tracking refs, and HEAD into one model so Git's pointer behavior becomes easier to reason about.
Remote-Tracking References
Understand the difference between `main` and `origin/main` so fetch, pull, push, and branch sync become easier to reason about.
Git Commit Graph and History Shape
Understand why Git history is fundamentally a graph rather than a simple timeline, and how merge and rebase reshape that graph.
Git Packfiles and Object Storage
Learn how Git uses packfiles, compression, and object reuse to store and transfer history efficiently instead of copying full project snapshots every time.
Reachability and Garbage Collection
Whether objects can still be recovered often depends more on reachability and garbage collection than on the command that made them harder to find.