Every git command, opened up from the inside.
No more memorizing incantations. Each command gets a plain-English explanation, an animated look at what happens to objects, refs and HEAD under the hood — and the real-world aliases the pros type every day.
The mental model
Four things. That's the whole engine.
Everything git does is a dance between objects, refs, the index and HEAD. Commit to these four and every command below becomes obvious.
Objects
Every blob, tree, commit and tag is an immutable, content-addressed object stored in .git/objects. Nothing is ever edited — history only grows.
- blob = file content
- tree = directory map
- commit = a snapshot of time
Refs
A ref is just a file holding one commit hash — a name for a position in history. Branches and tags are the same thing with different rules for moving.
- branches move on every commit
- tags never move
- remote-tracking refs mirror remotes
The Index
Also called the staging area, .git/index holds your next commit: path → blob-hash pairs. It lets you build a snapshot before you take it.
- works like a preview
- independent of working files
- what status compares against
HEAD
A file that says which branch you're on. When you commit, reset, or switch, HEAD (and the branch it points to) is what moves.
- usually → refs/heads/main
- detached = raw commit
- the worn 'you are here' marker
See how they connect in the command map
Every command plotted against the places it touches — working tree, index, repository and remote.
Watch a real, human day of git
Sixteen guided steps: scaffold the repo, split a messy session into atomic commits with chore / feat / style prefixes, and ship a feature on a branch — the 50/72 way, not the 50-files-in-one-commit way.
The library
Every command, grouped by the job it does.
Setup
Bring a repository to life.
Snapshotting
Turn changes into history.
Branching & Merging
Explore parallel timelines.
Inspecting & History
Read the story of a project.
Undoing & Rewriting
Repair commits and mistakes.
Sharing & Sync
Move history across machines.
Stop guessing. Start seeing commits.
Open one command page and watch its objects, refs and pointers move right in front of you — then memorize it forever with an alias.