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.