新手学Git,学会commit、push之后,下一个问题就是:分支该怎么管理?多人协作的时候,代码怎么合?有哪些常用的工作流?
今天整理一下几种常见Git工作流,说说各自适合什么场景,新手可以对着选。
1. Git Flow
最经典的一套分支规范:
- main/master:主分支,永远是生产可用的代码
- develop:开发分支,所有功能都合到这儿,准备发版了合到main
- feature/*:功能分支,开发新功能从develop分出来,做完合回去
- release/*:发版分支,准备发版本了从develop分出来,测完合到main和develop
- hotfix/*:线上紧急bug修复,从main分出来,修完合回main和develop
优点:规范清晰,分工明确
缺点:分支多,流程重,小项目有点麻烦
适合:大型项目、需要定期发版的产品项目
2. GitHub Flow
GitHub 推荐的简化版流程,更轻量:
- main分支永远是可部署状态
- 开发新功能直接从main拉feature分支
- 写完开Pull Request, review完合并到main
- 合并完就直接部署
优点:简单,流程轻,适合持续部署
缺点:如果频繁发布,没有稳定开发分支,稍微容易乱
适合:小团队、web项目、持续部署
3. Trunk-Based Development
主干开发,更极致的轻量:
- 所有人都往主干(main/trunk)上提交
- 真需要长期开发,才开feature分支,但是很快就合回来
- 靠单元测试和CI保证主干质量
优点:最简洁,协作最顺畅,不用来回合并半天
缺点:对测试和CI要求高,新手容易把主干搞挂
适合:DevOps团队、持续交付、自动化测试完善的项目
4. 我的日常选择:Trunk + 短生命周期feature分支
我自己现在做项目,一般这么玩:
- main是主干,永远保持可运行
- 小改动直接往main提交
- 大点的功能,开feature分支,本地推上去,写完自己做个Pull Request,自测完直接合,不用等别人review(个人项目)
- 团队项目就是开PR,至少一个人review再合
个人项目完全够用,不复杂,也不折腾。
新手怎么选?
- 个人项目/小项目 → 直接GitHub Flow或者Trunk-Based,简单够用
- 团队项目,需要稳定发版 → Git Flow,虽然重,但大家都按规则来不容易乱
- 敏捷团队,持续交付 → Trunk-Based,效率最高
不用纠结”哪个最正宗”,适合你项目规模和团队习惯就是最好的。先从简单的开始,不够用了再升级规范。
最后一点建议
规范是死的,人是活的。不用为了规范而规范,能让你协作顺畅、代码不乱就是好流程。刚开始不用强行上最复杂的GitFlow,先从简单的玩起来,慢慢调整就好。
你所在团队用什么工作流?欢迎留言交流。
适合新手的入门总结,老司机就不用看了😂