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]>
57 lines
1.4 KiB
Markdown
57 lines
1.4 KiB
Markdown
# Demonstration: A Complete Clone-to-Push Round Trip
|
|
|
|
## OBSERVE
|
|
|
|
A bare (remote-style) repository already exists, currently empty.
|
|
|
|
```
|
|
$ git clone /srv/demo-remote.git /srv/demo-clone
|
|
warning: You appear to have cloned an empty repository.
|
|
```
|
|
|
|
Cloning an empty remote is completely normal — it just means no commits exist there yet.
|
|
|
|
## HYPOTHESIS
|
|
|
|
Predict what `git remote -v` will show inside the new clone.
|
|
|
|
## INSPECT
|
|
|
|
```
|
|
$ cd /srv/demo-clone && git remote -v
|
|
origin /srv/demo-remote.git (fetch)
|
|
origin /srv/demo-remote.git (push)
|
|
```
|
|
|
|
Automatically configured as `origin` — exactly as the lesson described, with no extra setup.
|
|
|
|
## CHANGE
|
|
|
|
```
|
|
$ echo "# Demo Project" > README.md
|
|
$ git add README.md
|
|
$ git commit -m "Add README"
|
|
$ git push origin main
|
|
```
|
|
|
|
## VERIFY
|
|
|
|
```
|
|
$ git --git-dir=/srv/demo-remote.git log --oneline
|
|
3f9a1c2 Add README
|
|
```
|
|
|
|
Checking the REMOTE directly (not the clone) proves the push actually reached it — the commit
|
|
now exists in two places, in sync.
|
|
|
|
## Instructor Notes
|
|
|
|
**Demo goal:** Prove the push actually worked by inspecting the REMOTE side independently,
|
|
not just trusting the clone's own `git log`.
|
|
|
|
**Approximate timing:** 8 minutes live.
|
|
|
|
**Common mistake to watch for:** assuming a successful `git push` with no error message means
|
|
success without ever double-checking — worth reinforcing the "verify independently" habit from
|
|
earlier ROOT_ modules.
|