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]>
33 lines
1.2 KiB
Markdown
33 lines
1.2 KiB
Markdown
# Guided Exercise: Plan a Real Commit Before You Make It
|
|
|
|
This is a paper exercise — commit to a plan before working in the Lab.
|
|
|
|
## Your task
|
|
|
|
You've made three unrelated changes to your working tree: fixed a typo in `README.md`, added a
|
|
new function to `utils.py`, and started (but not finished) an unrelated experiment in
|
|
`scratch.py` you're not ready to commit. Write out the exact sequence of commands you'd use to
|
|
end up with exactly ONE clean commit containing the README typo fix, leaving the other two files
|
|
alone.
|
|
|
|
## A worked shape to check yourself against
|
|
|
|
```
|
|
git status
|
|
git add README.md
|
|
git diff --staged
|
|
git commit -m "Fix typo in README"
|
|
git status
|
|
```
|
|
|
|
The key insight: `git add` lets you choose EXACTLY what goes into the next commit, regardless of
|
|
what else is sitting, unstaged, in your working tree — `utils.py` and `scratch.py` remain
|
|
untouched and uncommitted.
|
|
|
|
## Instructor Notes
|
|
|
|
**Facilitation:** This exercise directly tests whether Module 2's staging-area model actually
|
|
stuck — if students reach for `git add .`, that's a sign to revisit the model before the Lab.
|
|
|
|
**Approximate timing:** 8-10 minutes live discussion; 5 minutes self-paced.
|