第 10 章 · Git Flow 与 release 标签
本章目标:理解 main / feature / hotfix 分工;在稳定 commit 上打 tag;在 GitHub Releases 写发版说明;区分 本地版本菜单 与 线上发版;能走一遍 hotfix 迷你流程。
学时建议:3~3.5 小时(含 1.5 小时跟练)
前置:git-collab ch09(PR 已 merge 过);ops-deploy 可选读。
10.1 场景说明:main 上又多了十个 commit,运维问「今晚发哪一版?」
shop-demo 本周 merge 了多个 PR:
- 商品筛选
- 购物车角标
- 文档修正
运维部署时需要明确指针:「就发 v1.3.0 这一快照」,而不是「main 上最新 whatever」。
标签(tag) = 给某个 commit 起的永久名字,如 v1.3.0。
GitHub Release = 标签 + 给人看的更新说明 + 可选附件。
10.2 学完你能
| 能力 | 验收 |
|---|---|
| 分支角色 | 说清 main / feature / hotfix |
| 打 tag | 本地 tag + push tag |
| Release | GitHub 网页建 Release |
| hotfix | 从 main 分支修 → PR → tag |
| 边界 | 本地回滚菜单 ≠ 线上发版 |
10.3 简化 Git Flow(小团队够用)
main ─────●────●────●────●──── (稳定,仅 PR 合入)
\ / \
●──● ●── hotfix/payment-500
feature/A feature/B
| 分支 | 用途 | 合并方式 |
|---|---|---|
| main | 线上稳定 | 仅 PR |
| feature/ | 新功能 | PR → main |
| hotfix/ | 线上紧急 bug | PR → main → 立即 tag |
| develop | 日常集成(可选) | 大团队用;小团队可省略 |
shop-demo 商城组(小团队):main + feature + hotfix 即可。
10.4 语义化版本(semver)速记
v主版本.次版本.修订号,例如 v1.3.0:
| 段 | 何时 +1 | 例子 |
|---|---|---|
| 修订 | bugfix,无新 API | v1.3.0 → v1.3.1 |
| 次版本 | 向后兼容新功能 | v1.3.1 → v1.4.0 |
| 主版本 | 破坏性变更 | v1.4.0 → v2.0.0 |
团队可写在 CONTRIBUTING.md;本章跟练用 v0.1.0-ch10 练手。
10.5 跟练 A:打 tag 并 push
步骤 1 — 确保 main 最新
cd ~/dev-workspace/shop-demo
git checkout main
git pull origin main
git log --oneline -1
记下当前 commit 短 hash(如 a1b2c3d)。
步骤 2 — 打 annotated tag(推荐)
git tag -a v0.1.0-ch10 -m "ch10 跟练:首次发版标签"
git tag -l "v0.1*"
git show v0.1.0-ch10
步骤 3 — 推送 tag 到 GitHub
git push origin v0.1.0-ch10
步骤 4 — 网页验收
GitHub 仓库 → Tags / Releases → 应看到 v0.1.0-ch10。
为什么 push tag:只 push commit 不会上传 tag;运维/CI 常 git checkout v1.3.0 部署。
10.6 跟练 B:GitHub Release
步骤 1 — Draft new release
Releases → Draft a new release
- Choose a tag:选
v0.1.0-ch10或新建 - Release title:
v0.1.0 练习版 - Describe: