第 6 章 · 拉取、stash 与进阶整理
本章目标:掌握 从 GitHub 拉取 的完整节奏;拉取遇冲突时按 ch05 解决;会用 stash 临时存未提交改动;了解 撤销/回滚 菜单的适用边界;rebase 仅作选修概念。
学时建议:3~3.5 小时(含 1.5 小时跟练)
前置:git-collab ch05(会解决合并冲突);ch08 会 push/pull 菜单。
6.1 场景说明:早上没 pull,一 push 就被拒
你在 feature/cart-badge 上开发了一晚,准备 推送到 GitHub。界面提示类似:
推送被拒绝:远程包含您本地没有的提交
原因:同事昨晚已把 main 或同一分支推上去。你需要 先拉取,把远程变更合进本地,再 push。
若拉取时你和远程改了同一行,就会出现 ch05 同款冲突——本章教你在工作台里安全走完。
6.2 学完你能
| 能力 | 验收 |
|---|---|
| 开工 pull | 说清「先拉再改再推」 |
| 拉取冲突 | 认标记 → 改文件 → 暂存 → 提交 |
| stash | 临时存 WIP,切分支后再 pop |
| 菜单撤销 | 知何时用「撤销提交」vs「重置到提交」 |
| 边界 | 已 push 的提交不能悄悄 reset |
6.3 标准节奏:pull → 开发 → push
① 打开项目(仓库根)
② 切 main → 从 GitHub 拉取
③ 切 feature →(可选)把 main 合进 feature
④ SRX / 手改 → 暂存 → 提交(多次)
⑤ 推送到 GitHub
为什么先 pull main:减少 push 被拒;合并冲突越早出现越好解决。
菜单路径(名称以界面为准):
- 仓库 → 仓库设置 → 从 GitHub 拉取
- 或 GitHub 远程仓库 子菜单里的拉取项
拉取时可能出现 进度条,大仓库请等完成,不要连点。
6.4 跟练 A:无冲突拉取(happy path)
步骤 1 — 在 GitHub 网页改一行
浏览器打开你的 shop-demo 仓库 → 编辑 README.md → 加一行「远程测试 2026」→ 直接 commit 到 main(个人练习仓库可以;团队项目应走 PR)。
步骤 2 — 本地 main 拉取
工作台:项目 → 打开项目 → 选 shop-demo 根目录。
cd ~/dev-workspace/shop-demo
git checkout main
git status # 期望 clean
仓库设置 → 从 GitHub 拉取
步骤 3 — 验证
打开 README.md,应看到网页上那行。终端:
git log --oneline -3
你应该看到 多了一条来自远程的提交(或 fast-forward 提示)。
6.5 跟练 B:拉取时产生冲突(必做)
步骤 1 — 本地 main 改 README 第一行(不 push)
git checkout main
把 README.md 第一行改为:
# shop-demo — 本地 main 未推送
暂存 → 提交,说明:docs: 本地 main 标题
步骤 2 — 网页再改同一行
GitHub 上把第一行改为:
# shop-demo — 远程 main 标题
commit 到 main。
步骤 3 — 本地拉取
从 GitHub 拉取
步骤 4 — 应出现冲突
README.md 含 <<<<<<< 等标记;文件树 M 强提示。
步骤 5 — 解决(同 ch05)
改成统一标题,例如:
# shop-demo — pull 冲突已解决