This page is your "wall of mastery." It shows every module you've visited, completed, and scored on โ across all three tiers. Print it for a clean PDF certificate.
Tier 1 covered the porcelain โ 47 user-facing commands you'll touch most days. You learned the working-tree โ index โ object-database flow that every other Git operation builds on. You know that a branch is a movable pointer to a commit, that HEAD is a symbolic ref to that pointer, and that fast-forward merges aren't really merges at all โ they're pointer moves.
The big mental shift in Tier 1 was that commits are snapshots, not diffs. Git stores the whole tree at each commit and computes diffs lazily. That's why branching is cheap (a 41-byte file), why git log walks parents (it's a DAG, not a linear list), and why git reset and git revert look superficially similar but do entirely different things โ one moves the pointer, the other adds a new commit.
You also met the reflog (every branch-tip move recorded for 90 days), stash (a tiny side-stack of dirty work), and the rebasing-history triad (rebase, cherry-pick, revert). You should be allergic to force-pushing shared branches by now. If you aren't, re-read module 21.
git initโ M02git cloneโ M03git statusโ M04git addโ M05git stageโ M06git commitโ M07git diffโ M08git logโ M09git showโ M10git mvโ M11git rmโ M12git restoreโ M13git resetโ M14git revertโ M15git checkoutโ M16git switchโ M17git branchโ M18git tagโ M19git fetchโ M20git pullโ M21git pushโ M22git mergeโ M23git rebaseโ M24git cherry-pickโ M25git stashโ M26git cleanโ M27git shortlogโ M28git describeโ M29git grepโ M30git bisectโ M31git notesโ M32git worktreeโ M33git submoduleโ M34git sparse-checkoutโ M35git archiveโ M36git bundleโ M37git format-patchโ M38git amโ M39git range-diffโ M40git maintenanceโ M41git gcโ M42git backfillโ M43git historyโ M44git citoolโ M45git guiโ M46gitkโ M47scalarโTier 2 expanded the surface area: 57 ancillary, foreign-SCM, and helper commands. You learned why Git's design ages well โ the porcelain has changed (think switch/restore replacing checkout), but the helpers haven't because they're already minimal and orthogonal.
You met config and its three layers (system โ global โ local), the reflog from a recovery angle, the remote family for managing more than one upstream, and replace for the rare situation where you need to lie to history without rewriting it. You saw how blame and annotate use merge-base under the hood, why count-objects -v is your first stop when a repo bloats, and what happens when you actually run fsck on a repo someone has been "fixing" by hand.
The bridge commands (svn, p4, cvs*) showed you that Git was designed from day one to import from anything. Most of them are crusty, but they're also durable โ they'll still be there in 2034 when you inherit a Mercurial repo from someone's archive.
The helpers โ check-attr, check-ignore, interpret-trailers, credential โ are the small tools that scripts and hooks lean on. Once you know they exist, you stop reaching for grep + awk and start using the things Git already ships with.
git configโ M02git fast-exportโ M03git fast-importโ M04git filter-branchโ M05git mergetoolโ M06git pack-refsโ M07git pruneโ M08git reflogโ M09git refsโ M10git remoteโ M11git repackโ M12git replaceโ M13git annotateโ M14git blameโ M15git bugreportโ M16git count-objectsโ M17git diagnoseโ M18git difftoolโ M19git fsckโ M20git helpโ M21git instawebโ M22git merge-treeโ M23git rerereโ M24git show-branchโ M25git verify-commitโ M26git verify-tagโ M27git versionโ M28git whatchangedโ M29gitwebโ M30git archimportโ M31git cvsexportcommitโ M32git cvsimportโ M33git cvsserverโ M34git imap-sendโ M35git p4โ M36git quiltimportโ M37git request-pullโ M38git send-emailโ M39git svnโ M40git check-attrโ M41git check-ignoreโ M42git check-mailmapโ M43git check-ref-formatโ M44git columnโ M45git credentialโ M46git credential-cacheโ M47git credential-storeโ M48git fmt-merge-msgโ M49git hookโ M50git interpret-trailersโ M51git mailinfoโ M52git mailsplitโ M53git merge-one-fileโ M54git patch-idโ M55git sh-i18nโ M56git sh-setupโ M57git stripspaceโTier 3 was the plumbing โ 55 modules that strip away every layer of porcelain. You can now read commits with cat-file -p, walk trees with ls-tree, build a brand-new commit with hash-object + mktree + commit-tree + update-ref, and understand precisely what git commit does when you press Enter.
You learned that the object database is content-addressable: blobs, trees, commits, and tags all hash to a SHA, all live as files (or in packs), and nothing โ nothing โ is mutated in place. New commits get new SHAs. Old objects stay until gc decides nothing references them anymore.
You met rev-parse (the universal revision parser) and for-each-ref (the universal ref iterator). Together they're the entire shell-scripting toolkit: with these two and a while loop, you can write any custom Git report you'd ever need.
You saw the transfer protocol: upload-pack and fetch-pack negotiating "what do you have?" and "what do I need?" before sending a pack. You saw receive-pack validating an incoming push, and update-server-info keeping dumb HTTP servers honest.
You finished with git daemon, git http-backend, and git shell โ the three ways to run Git as a server without depending on GitHub or anything else. Which is, of course, the point: Git is fully decentralized. Every clone is a complete repo. Every workflow is yours to choose.
That's the course. Print this page. Hang it on the wall. Get back to work.
git applyโ M02git checkout-indexโ M03git commit-graphโ M04git commit-treeโ M05git hash-objectโ M06git index-packโ M07git merge-fileโ M08git merge-indexโ M09git mktagโ M10git mktreeโ M11git multi-pack-indexโ M12git pack-objectsโ M13git prune-packedโ M14git read-treeโ M15git replayโ M16git symbolic-refโ M17git unpack-objectsโ M18git update-indexโ M19git update-refโ M20git write-treeโ M21git cat-fileโ M22git cherryโ M23git diff-filesโ M24git diff-indexโ M25git diff-pairsโ M26git diff-treeโ M27git for-each-refโ M28git for-each-repoโ M29git get-tar-commit-idโ M30git last-modifiedโ M31git ls-filesโ M32git ls-remoteโ M33git ls-treeโ M34git merge-baseโ M35git name-revโ M36git pack-redundantโ M37git repoโ M38git rev-listโ M39git rev-parseโ M40git show-indexโ M41git show-refโ M42git unpack-fileโ M43git varโ M44git verify-packโ M45git daemonโ M46git fetch-packโ M47git http-backendโ M48git send-packโ M49git update-server-infoโ M50git http-fetchโ M51git http-pushโ M52git receive-packโ M53git shellโ M54git upload-archiveโ M55git upload-packโ