This repository is the course. Your practice should happen in a separate throwaway learning repository so you can experiment, break things, recover them, and build real Git history without modifying the curriculum itself.
- Git = version control on your computer. It records project history as commits.
- GitHub = a hosting and collaboration platform for Git repositories.
The goal is not memorizing commands. The goal is becoming able to inspect a repository, make changes safely, recover from mistakes, collaborate through branches and pull requests, and understand what Git is doing.
Before Lesson 1, create a folder/repository named something like:
git-github-lab/
├── notes/
├── experiments/
└── README.md
All practice, deliberate mistakes, lesson logs, branches, conflicts, resets, and recovery exercises happen there.
Do not use this course repository as your practice playground. Treat this repo as read-only curriculum.
See STUDENT_LAB.md for the exact setup.
Use this loop:
LEARN → PREDICT → DO → INSPECT → BREAK/RECOVER → EXPLAIN → PROVE
For each module:
- work through the module guide in your student lab,
- complete the module's
Exercises/README.mdchallenges, - complete the matching cumulative gate in ASSESSMENTS.md,
- advance only when you can do the required work without copying a recipe.
When a task contains a destructive or history-rewriting command, first read SAFETY.md.
- Module 0 — Setup: Git vs GitHub, installation, identity, first repository
- Module 1 — Daily Core: status, diff, staging, commits, history, ignore rules
- Module 2 — Branching: branches, switching, merging, branch inspection
- Module 3 — Remotes: clone, push, fetch, pull, upstream tracking, divergence
- Module 4 — Collaboration: forks, pull requests, review, issues, contribution etiquette
- Module 5 — Recovery: restore, stash, amend, revert, reset, reflog
- Module 6 — Real World: conflicts, rebase, tags/releases, controlled GitHub Actions lab
- Final Capstone: complete a real contribution workflow and demonstrate recovery skills
The Logs/ files in this curriculum are templates/reference worksheets. Copy the relevant log into your own git-github-lab/notes/ folder and fill it out there.
Do not edit the public curriculum merely to tick boxes.
Before any command that can discard or rewrite work:
git status
git diff
git log --oneline --decorate -10Then ask:
Is the work committed? Is it pushed/shared? Am I intentionally rewriting or deleting anything?
If you cannot answer those questions, stop and inspect before continuing.
You are ready to move on when you can:
- predict what a command will change,
- run it,
- inspect whether your prediction was correct,
- explain the result,
- recover if you deliberately create a failure,
- pass the module challenge and cumulative gate without command-by-command copying.
Finishing pages is not mastery.
- Open STUDENT_LAB.md.
- Create your separate practice repo.
- Then begin Module 0.
If you get lost later, return to this sentence:
Read the lesson. Work in the lab. Inspect constantly. Complete the challenge. Prove the gate.