📖 知识点
1. 什么是 Git Flow?
Git Flow 是一套分支管理规范,把分支分成几种固定角色,每种干不同的事。最核心的三个分支:
| 分支 | 角色 | 规则 |
|---|---|---|
| 正式发布版 | 只放能上线的稳定版本,打 tag 发布 |
| 日常集散地 | 日常开发合到这里,功能开发完并进来 |
| 单个功能 | 从 develop 开出,做完合回 develop |
💡 生活比喻Git Flow 像 "三层仓库":master 是 "成品展示柜"(只放能卖的正品),develop 是 "打包车间"(各功能拼装试运行),feature 是 "原料加工间"(单个功能单独制作)。各司其职,不乱套。
2. 功能开发的标准路径
feature-会员 ←从 develop 开→ 开发完 → 合回 develop → 测试OK → 合到 master → 打tag发布
git checkout -b feature-会员 develop # 从develop开功能分支
# ...开发、提交、push...
git checkout develop # 切回develop
git merge feature-会员 # 功能合回develop
3. master 只负责 "发布"
master 平时不动,只有测试通过、要发布时才把 develop 合并过来,然后打 tag:
git checkout master
git merge develop
git tag -a v1.0 -m "正式发布"
4. 三层分工的收益
master 永远可发布(稳定)
develop 是开发集散地(持续集成)
feature 隔离单功能(并行不打架)
⚠️ 易错提醒
master 只放 "能发布" 的版本,别把日常改动直接塞进 master
功能分支从 develop 开(不是 master),做完合回 develop
只有正式发布才把 develop 合到 master 并打 tag
⚔️ 剧情 Kata 实战任务
任务需求:
确认当前仓库分支(git branch)
从当前主线开出一个
develop开发分支从 develop 开出功能分支
feature-支付优化在功能分支开发提交
把功能合回 develop,模拟 "master 只留正式版" 的章程
参考代码(在终端依次敲)
# 0. 进仓库
cd ~/外卖App
git switch master
# 1. 建立 develop 开发分支
git checkout -b develop
# 2. 从 develop 开功能分支
git checkout -b feature-支付优化 develop
# 3. 在功能分支开发并提交
echo "def 支付优化(): return '免密支付'" > 支付优化.py
git add 支付优化.py
git commit -m "feat: 新增免密支付"
# 4. 把功能合回 develop
git switch develop
git merge feature-支付优化
# 5. 查看:功能在develop,master还是正式版
git log --oneline
git branch
运行示例:
user@linux:~/外卖App$ git branch
* develop
feature-支付优化
master
user@linux:~/外卖App$ git log --oneline
f4a5b6c feat: 新增免密支付
9d0e1f2 (tag: v1.0) feat: 新增支付模块(阿琳)
...
user@linux:~/外卖App$ git switch master
Switched to branch 'master'
user@linux:~/外卖App$ git log --oneline
9d0e1f2 (tag: v1.0) feat: 新增支付模块(阿琳)
💡 完成动作示意:
从 master 开出
develop,再从 develop 开出feature-支付优化功能开发完
git merge合回 develop切到 master,
git log里没有新功能(master 还是 v1.0 正式版)—— 三层分工生效:功能在 develop,master 保持稳定!
🧠 思考题
Git Flow 里 master、develop、feature-* 三个分支各负责什么?为什么 master 要保持 "只放正式版"?
新功能开发的标准路径是什么?(提示:从 develop 开 feature → 开发 → 合回 develop → 发布时合到 master)