A hands-on Git course with 17 modules -- short lessons followed by labs where you actually practice on real repos. The labs are designed to be guided by Claude Code: type /lab in your terminal and it walks you through each exercise, explains commands before you run them, and helps you fix things when you mess up.
You don't need Claude Code to use this -- every lab is a self-contained markdown file you can follow on your own. But the guided mode is the main way I use it and where the course works best.
Free, open source, just clone and go.
I was using Git daily but didn't actually understand what I was doing. I kept Googling the same things and copy-pasting commands. So I built this to force myself to learn it properly.
The Claude Code integration happened because the biggest pain point when learning Git is screwing up a command and ending up in some weird state with no idea how to get out. Claude can see your terminal output and walk you through fixing it, which removes a lot of the guesswork. You can also ask questions mid-exercise and get answers that reference the actual repo you're working in, not generic explanations.
| Tool | Check | Install guide |
|---|---|---|
| Git | git --version |
git-scm.com/downloads |
| Bash terminal | bash --version |
See terminal setup below |
| GitHub account | -- | github.com/signup |
| GitHub CLI | gh --version |
cli.github.com |
| Claude Code | claude --version |
claude.ai/claude-code -- the guided lab experience |
Several labs (05, 11, 12, 13, 14, 16) create temporary repositories on GitHub to practice pull requests, issues, actions, and other platform features. These labs require:
- A GitHub account -- sign up here if you don't have one
- The GitHub CLI (
gh) installed -- cli.github.com - The CLI authenticated to your account -- run
gh auth loginand follow the prompts - The
delete_reposcope on your token (needed to clean up practice repos) -- rungh auth refresh -h github.com -s delete_repo
You can verify your connection with:
gh auth statusNo GitHub account? Modules 01-04, 06-10, 15, and 17 work entirely offline with local Git -- no account needed. You can complete those first and set up GitHub when you're ready.
The setup scripts and lab exercises use bash. This works out of the box on macOS and Linux. Windows users need one of the following:
- Git Bash (recommended) -- included when you install Git for Windows. Open "Git Bash" from the Start menu.
- WSL (Windows Subsystem for Linux) -- run
wsl --installin PowerShell, then open the Ubuntu terminal. Microsoft WSL guide. - VS Code terminal -- if you have Git for Windows installed, configure VS Code to use Git Bash as the default terminal.
Note: PowerShell and cmd.exe are not supported. The setup scripts use bash syntax (heredocs,
/tmp/paths,set -euo pipefail) that requires a bash-compatible shell.
git clone https://github.com/NormlT/git-from-scratch.git
cd git-from-scratchcp progress.template.md progress.mdThis file tracks which modules you have completed. It is listed in .gitignore so it stays local to your machine.
Pick one of the two paths below and jump into Module 01.
- Open a terminal in the repo directory and run
claude - Type
/labto start a guided walkthrough of your next module - Claude walks you through exercises step by step and marks modules complete when you're done
- Jump to a specific module anytime:
/lab 04 - Reset the current lab:
/redo-- removes the lab directory and marks the module incomplete so you can start it fresh - Reset the entire course:
/redo course-- clears all progress and lab directories (asks for confirmation first)
Each lab is fully self-contained -- you don't need Claude to follow along:
- Read the lesson -- open
curriculum/<part>/<module>/lesson.mdfor the concept explanation and video links - Run the setup --
bash curriculum/<part>/<module>/setup.shcreates a practice repo in/tmp/ - Follow the exercises -- open
lab.mdin the same folder and work through the numbered steps - Check your work -- each lab has a "Verify" section telling you how to confirm success
- Track progress -- check off completed modules in
progress.md
Example for Module 01:
bash curriculum/part-1-foundations/01-what-is-git/setup.sh
# then open curriculum/part-1-foundations/01-what-is-git/lab.md and follow alongModules marked GitHub require a GitHub account and the gh CLI. All other modules work entirely offline with local Git.
| # | Module | What You Learn |
|---|---|---|
| 01 | What is Git? | Mental model of version control, repos, commits |
| 02 | Setup & Config | Install, configure identity, SSH keys |
| 03 | The Basics | init, add, commit, status, log, diff |
| # | Module | What You Learn | |
|---|---|---|---|
| 04 | Branches | Create, switch, delete branches; understand HEAD | |
| 05 | PR Workflow | Fork, clone, branch, push, open PR, review, merge | GitHub |
| 06 | Merging & Conflicts | Fast-forward vs 3-way merge, resolving conflicts | |
| 07 | Rebasing | Rebase vs merge, interactive rebase, when to use each | |
| 08 | Stashing | Save work-in-progress, apply later, manage stash stack |
| # | Module | What You Learn | |
|---|---|---|---|
| 09 | Undoing Mistakes | reset, revert, checkout, restore, clean | |
| 10 | Cherry-pick & History | Cherry-pick commits, bisect, log filtering | |
| 11 | Tags & Releases | Lightweight vs annotated tags, GitHub releases | GitHub |
| # | Module | What You Learn | |
|---|---|---|---|
| 12 | Issues & Projects | Issue tracking, labels, milestones, project boards | GitHub |
| 13 | GitHub Actions | CI/CD basics, workflow files, common actions | GitHub |
| 14 | Branch Protection | Rules, required reviews, status checks | GitHub |
| # | Module | What You Learn | |
|---|---|---|---|
| 15 | Securing Your Account | 2FA, SSH keys, PATs, session management | |
| 16 | Repository Security | Dependabot, secret scanning, security policies | GitHub |
| 17 | Public Repo Best Practices | .gitignore, secrets hygiene, LICENSE, CODEOWNERS |
- Short explanations, then practice -- you learn Git by doing, not reading
- Real scenarios -- labs simulate actual situations you will encounter at work
- Safe to experiment -- everything runs in temporary directories, your real repos are untouched
- Progressive -- each module builds on the previous ones
This course was built with Claude Code -- both as a development tool for writing the curriculum and as the interactive lab instructor that guides you through it.
Found a typo, broken link, or have an idea for a new module? Open an issue or submit a pull request.
This project is licensed under the MIT License.