学习了Git研发流程后,对git的使用有了一些新的理解,并在此次大项目中有所应用,此文对使用做一个小结。
Git工作流
集中式工作流
使用集中式工作流的代表性平台为Gerrit以及SVN,它的特点在于只依托于主干分支进行开发,不存在其他分支,工作方式大致可以总结为四步
- 获取远端master代码
- 直接在master分支完成修改
- 提交前拉去最新的master代码和本地代码进行合并
- 提交本地代码到master
分支管理工作流
分支管理工作流有三种比较有代表性的管理策略,分别为Git Flow、Github Flow以及Gitlab Flow。
Git Flow
Git Flow是比较早期的分支管理策略,它具有分支类型丰富,规范严格的特点。包含下列五种类型的分支:
- Master:主干分支
- Develop:开发分支
- Feature:特性分支
- Release:发布分支
- Hotfix:热修复分支
其优点在于按照规范整理的代码会很清晰。但缺点也很明显,流程过于复杂,研发容易不按照标准执行,从而导致代码混乱。
Github Flow
Gtihub Flow的最大特点在于使用Pull Request来往主干分支中提交代码,且一般只有一个主干分支,其他分支在使用PR合入主干后,就可以进行删除。
使用这种方式进行团队协作开发足够简单,学习成本也很低,适合小规模的协同开发。
有两种合作的方式
- 创建好仓库后,其他用户通过Fork的方式来创建自己的仓库,并在Fork的仓库上进行开发
- 创建好仓库后,统一给其他团队成员分配权限,直接在同一个仓库内进行开发
使用Fork的方式时,可以使用git remote set-url来为remote分配不同的fetch和push的路径,将fetch设置为目标仓库,push设置为自己的私人仓库,这样就可以随时同步最新的代码。
Gitlab Flow
Gitlab Flow实在Git Flow和Github Flow的基础做出了优化,既保持了单一主分支的简便,又可以适应不同的开发环境。
其采用上游优先(upstream first)的策略,规定只有在上游分支(一般为master)采纳的代码才可以进入到下游分支。