Learn git the way it actually works

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.

28 commands decoded 6 workflows every chapter animated

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.

Open map

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.

Walk the day

The library

Every command, grouped by the job it does.

Setup

Bring a repository to life.

2 commands

Snapshotting

Turn changes into history.

3 commands

Branching & Merging

Explore parallel timelines.

5 commands

Inspecting & History

Read the story of a project.

6 commands

Undoing & Rewriting

Repair commits and mistakes.

6 commands

Sharing & Sync

Move history across machines.

6 commands

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.