Skip to main content

Git & Collaboration

A tiny object store and commit graph, then the real Git workflows teams run on.

Git stops being mysterious the moment you see what is on disk: a content-addressed store of blobs, trees and commits, a few files that name commits, and a protocol that ships the missing objects in one packfile. Every confusing moment (a detached HEAD, a conflict that makes no sense, a clone that takes an hour, a hook that eats your changes, a regression nobody can date) is one of those mechanisms behaving exactly as designed. This phase builds each mechanism small, then checks it against Git itself: whatever your tool writes, git fsck has to accept.

How this phase is built​

LessonTypeWhat you buildWhat you then use
ObjectsBuildminigit: blobs, trees, commits and tags with zlib and SHA-1, refs, a reflog, log, checkout and fsckGit's plumbing: hash-object, cat-file, write-tree, commit-tree, update-ref
Merge queuesBuildmergequeue: branch protection as data, CODEOWNERS matching, a speculative merge queue and a branch-lifetime simulatorrulesets, the merge queue, stacked PRs, merge trains

More lessons for this phase are being written; the plan is in ROADMAP.md.

Reference layer​

The long-form guides, cheat sheet and interview questions for this phase live under Git. The CI/CD phase builds on it: the pipeline runner and release lessons drive Git from code.