Progress:
TIER 1

Basics

Porcelain. Daily-driver commands. The stuff you'd type before lunch.

Welcome to Tier 1 — the basics. This is the porcelain. The commands you'll type before lunch, after dinner, and in your sleep once your fingers learn them.

If you've used Git for a while you'll recognize most of what's here. The point of this tier isn't to introduce the commands — it's to make sure you understand them honestly. Most people learn git pull as "get changes." That's true, but it lies about what's actually happening. We won't.

Each module follows the same 12-section template: what the command is for, the mental model (what it touches in .git/ under the hood), the official synopsis, the most-used flags, the subcommands when applicable, real use cases, four progressively-deeper examples, recommendations, common pitfalls, related modules, and a short quiz.

The quiz is never a gate — your score is recorded, but the Next button is always live. You can come back and improve any module's score; the certification page tracks your best.

By the end of Tier 1 you should be able to do everyday work confidently — branch, commit, merge, rebase, stash, push, pull, and recover when things go sideways. You'll also have a healthy skepticism of porcelain, which sets you up for Tier 2.

📚 Modules in this tier (48)

M00
Tier 1 intro — start here
Mindset, prerequisites, what you'll know by the end.
M01
git init
Bootstrap a .git directory in any folder and turn it into a Git repo.
M02
git clone
Mirror a remote repo onto your disk, refs and all.
M03
git status
The cheap, safe, always-run-first command.
M04
git add
Move work from the working tree into the index.
M05
git stage
A historical synonym. Same plumbing, different keystrokes.
M06
git commit
Write the index into a new commit object on the current branch.
M07
git diff
Working tree, index, commits, branches — all comparable.
M08
git log
Read the DAG. Customize the output until it tells you what you need.
M09
git show
Commit, tree, tag, blob — show what's inside.
M10
git mv
Convenience wrapper for mv + add + rm of the old name.
M11
git rm
Delete from the working tree and stage the removal.
M12
git restore
Modern, intent-clear replacement for half of git checkout.
M13
git reset
Three modes. One footgun. Learn it cold.
M14
git revert
The safe way to back out a change that's already public.
M15
git checkout
The original swiss-army command. Use switch/restore instead today.
M16
git switch
The intent-clear replacement for the branch half of checkout.
M17
git branch
It's just a movable pointer. Treat it like one.
M18
git tag
Lightweight or annotated. Releases live here.
M19
git fetch
The non-destructive half of git pull.
M20
git pull
Two operations stapled together. Know which staple.
M21
git push
Append-only by default. Force-push only when you mean it.
M22
git merge
Three-way merge. Fast-forward when it can. A merge commit when it can't.
M23
git rebase
History rewriter. Powerful. Don't rebase what you've already pushed.
M24
git cherry-pick
Take a commit from another branch and replay it on this one.
M25
git stash
Tucks dirty changes onto a stack so you can switch branches.
M26
git clean
There is no undo. Use -n first. Always.
M27
git shortlog
Release notes' best friend.
M28
git describe
Outputs a human-readable version string from the nearest tag.
M29
git grep
Faster than grep on a repo. Plays well with revspecs.
M30
git bisect
Tell it good and bad. It tells you the guilty commit.
M31
git notes
A side-channel for things that don't belong in the commit message.
M32
git worktree
Check out two branches at once without cloning twice.
M33
git submodule
Powerful, fragile, often the wrong answer. Know when it isn't.
M34
git sparse-checkout
Make huge repos workable on small disks.
M35
git archive
Like a .tar.gz of any commit, no .git inside.
M36
git bundle
Sneakernet your repo across an air gap.
M37
git format-patch
The kernel mailing-list workflow in one command.
M38
git am
The receiving end of format-patch.
M39
git range-diff
How did this rebase change my commits, really?
M40
git maintenance
Scheduled gc, fetch, commit-graph. The Cron of Git.
M41
git gc
Clean up dangling objects and recompress packfiles.
M42
git backfill
For partial clones — pull objects on demand.
M43
git history
People type this expecting log. Here's why, and what to actually use.
M44
git citool
A graphical commit composer. Old, still ships.
M45
git gui
Sibling of citool — broader scope.
M46
gitk
The grandfather of every Git GUI you've used.
M47
scalar
Microsoft's wrapper around partial clone + sparse-checkout + maintenance.