Hands-On: Two Clones
Hands-On: Fork, Clone, Branch, Commit, Push
Simulate a remote with a bare repo on Linux. No forge account required.
Origin (bare)
~/desk/desk-api ~/desk/desk-api.git ~/desk/desk-api-b
(clone A, you) (bare origin) (clone B, teammate)
│ push/fetch ▲ │ fetch/merge
└─────────────────────────┴──────────────────────┘
mkdir -p ~/desk
git init --bare ~/desk/desk-api.gitYour clone
If ~/desk/desk-api already has history:
cd ~/desk/desk-api
git remote remove origin 2>/dev/null || true
git remote add origin ~/desk/desk-api.git
git push -u origin mainIf you are starting empty:
git clone ~/desk/desk-api.git ~/desk/desk-api
cd ~/desk/desk-api
# if clone was empty, make the chapter 3 tiny project first, then:
git push -u origin mainA second clone (teammate or your own review checkout)
git clone ~/desk/desk-api.git ~/desk/desk-api-b
cd ~/desk/desk-api-b
git log --oneline -3Feature on A, fetch on B
cd ~/desk/desk-api
git switch -c feat/readme-note
echo "Lab remote: ~/desk/desk-api.git" >> README.md
git add README.md
git commit -m "docs: note the local origin path"
git push -u origin feat/readme-notecd ~/desk/desk-api-b
git fetch origin
git log --oneline main..origin/feat/readme-note
git merge origin/feat/readme-noteOn a forge, that merge on B is the reviewer’s local check; the PR merge happens on the server into main. Here, integrate on A:
cd ~/desk/desk-api
git switch main
git merge --ff-only feat/readme-note
git push origin main
git branch -d feat/readme-note
git push origin --delete feat/readme-notecd ~/desk/desk-api-b
git fetch origin
git switch main
git merge --ff-only origin/mainDone when
~/desk/desk-api.githasmainwith the docs commit- Both clones’
mainmatchgit rev-parse HEAD - Feature branch is gone locally and on origin
You just did clone, branch, commit, push, fetch, and integrate. A pull-request button is that last integrate, with a UI. Next: stash, tags, and cleanup on a single clone.