Best Practices
主题分支策略
用 topic branch 隔离单项工作,让并行开发、回滚、rebase、review 和发布边界都更清楚。
为什么不要把所有工作都堆在一个长期分支上
主题分支的核心价值不是“分支多一点更专业”,而是把工作边界和历史边界对齐。你在做登录校验、导航修复、发布文档时,其实应该拥有三段不同的历史,而不是一条混在一起的提交串。
1. 每项工作一个分支
最稳的起手动作是:
git switch -c feature/login-validation
这样做以后:
- 被取消的工作可以整段丢弃
- review 可以围绕一个清晰主题进行
- rebase、merge、cherry-pick 的边界都会更清楚
2. 主题分支最适合表达“一个工作单元”
常见的工作单元包括:
- 一个功能
- 一个 bugfix
- 一组文档更新
- 一次发布准备
不太适合的情况是:
- “我这一周所有零碎改动”
- “顺手一起做的几件事”
- “先堆在这,后面再拆”
如果你已经预感“后面再拆”会很痛,那通常说明现在就该分支。
3. 分支命名也属于协作成本
更好的分支名通常直接表达主题:
feature/login-validationfix/navbar-overlapdocs/release-notes
不太好的分支名通常是:
testnew-branchmaqi-work
一个清晰名字的意义在于,CI、review、回滚和口头沟通时都更省力。
4. 主题分支让并行工作更自然
假设你正在做一个功能分支,但 review 还没结束,这时突然又来了线上 bug。主题分支策略会让这类场景变得非常自然:
- 保留当前功能分支等待 review
- 从主线再切一个 bugfix 分支
- 修完后单独合并
- 再回到原来的功能分支继续
这比把所有事情都堆在一个共享分支上安全得多。
5. 为什么 topic branch 对 rebase 更友好
官方书里长期把 rebase 和小而独立的分支一起讨论,因为 rebase 最适合处理边界清晰的历史。
一个主题分支如果只承载一件事,那么:
- 你更容易判断是否值得 rebase
- 冲突更容易理解
- 整理提交顺序时不容易误伤无关工作
6. 主题分支也降低了回滚难度
如果一项工作出了问题,理想状态是你可以:
- revert 这一组提交
- 或者直接关闭、舍弃这条分支
而不是从一条混合分支里一边辨认、一边手动拆弹。
7. 一个适合团队的最低规则
如果你要给团队定义轻量规则,可以先从这几条开始:
- 一项任务一个主题分支
- 分支名必须表达工作主题
- 非紧急共享分支不直接开发
- 发起评审前先把分支同步到最新主线
最后这条很关键,因为它会把主题分支从“只是分开”推进到“可以顺利合并”。