Adds all 6 ROOT 03 modules (why version control exists, the Git mental model, everyday Git, branching & merging, remote repositories, engineering Git workflow) — 31 activities. Uses only real LOCAL Git repositories throughout — no Gitea account, no network access, and no RootNode-canonical-repo credential is ever needed or exposed in a student Lab (docs/ROOT_FOUNDATIONS_LAB_STRATEGY.md §4). Modules 1, 2, and 6 are conceptual bookends with no lab, matching the flexible readiness standard already used in ROOT 01/02. Adds 3 new hands-on Git scenarios plus 2 MCQs: git-everyday-basics (init/add/commit, validated by inspecting real `git log`/`git show` state, not just command output strings — Step 6's explicit requirement), git-branching-and-merge (a REAL merge conflict caused on purpose by two branches editing the same line, resolved by the student, validated by confirming the conflict markers are gone and a real two-parent merge commit exists), and git-remote-clone-push (a real local bare repository standing in for a remote — clone/commit/push validated by inspecting the REMOTE side directly, not just the student's own clone). All tested end-to-end via the real scenario-validation API, including negative tests. Wires rootnode-git-fundamentals-assessment (2 required + 3 random-draw scenarios) using the existing Phase 3B assessment engine. Co-Authored-By: Claude Sonnet 5 <[email protected]>
1.1 KiB
1.1 KiB
Demonstration: The Full Cycle, End to End
OBSERVE
$ git init
$ git status --short
(nothing — empty repository)
HYPOTHESIS
Predict what happens to git status after creating a new file.
INSPECT
$ echo "v1" > app.py
$ git status --short
?? app.py
CHANGE
$ git add app.py
$ git diff --staged
+v1
$ git commit -m "Add initial app.py"
git diff --staged shows exactly what's ABOUT to be committed — a real, final check before it
becomes permanent.
VERIFY
$ git log --oneline
3f9a1c2 Add initial app.py
$ git status --short
(clean)
The complete cycle, verified with real evidence at each step — not "I think I committed it,"
but confirmed via git log.
Instructor Notes
Demo goal: Show git diff --staged as the final safety check before a commit becomes
permanent — a habit worth building explicitly, not just mentioning in passing.
Approximate timing: 8 minutes live.
Common mistake to watch for: skipping git diff/git diff --staged entirely and committing
on faith — a good moment to ask "how would you know if you accidentally staged the wrong
thing?"