This tutorial takes a deep dive into the internals of everyone's favorite source control system, git. It assumes that you are familiar with using git (e.g. commits, branches, tags), and we'll take a look at the internals of git and how it works, and in particular, its file formats.
- git as a content-addressable store
We look at how git works at its lowest level, as a content-addressable store.
- How git implements source control
We look at how git uses its content-addressable store to implement source control.
We look at how git compresses its content into packs.
- Delta objects
We look at how git compresses its content even more by using deltas.
- Pack indexes
We look at how git uses an index to speed up access into packs.
- Retrieving objects from a repo
We look at how to retrieve an arbitrary object from a repo, whether it be a loose object or in a pack.
- Delta objects in other packs
We look at reconstructing pack objects that have a base object in another pack.
- The staging index
We look at how git stores what's currently in the staging index.
- git references
We look at how git manages references (refs).
- git logs
We look at how git maintains a history of ref activity.
- Wrapping up
We beef up the scripts, and add code to verify what they're doing.