前言
- 一、工作流概述
- 二、Git flow
- 1.主要流程
- 2.优缺点
- 3.适用场景
- 三、Github flow
- 1.主要流程
- 2.优缺点
- 3.适用场景
- 四、Gitlab flow
- 1.主要流程
- 2.优缺点
- 3.适用场景
- 总结
- 参考
一、工作流概述
开发人员通过Git可以记录和追踪代码的变化,包括添加、删除和修改文件。如果是单人进行开发,可以很方便进行研发和发布等工作。但是实际工作中都是团队协作进行多功能点并行开发,还涉及测试环境、集成环境和生产环境的打包发布,以及线上bug修复等,如何将以上工作进行协调,这就需要一套完整的代码管理和版本控制的流程规范。
而在团队中使用Git进行协作开发时,各个成员遵循的一套代码管理和版本控制的规范流程就是Git工作流。根据实际工作经验,被广泛使用的Git工作流为:Git flow、Github flow、Gitlab flow。
二、Git flow
1.主要流程
- master是最稳定分支,其中代码是最稳定的、其中代码已经验证充分并且已发布到生产环境,可以通过master跟踪生产环境版本发布情况。
- develop是主开发分支,feature分支和release分支都是从此分支拉取。可以通过develop跟踪开发过程中的版本情况。
- feature:功能分支,主要是需要开发新功能从develop进行拉取,开发完成后合并回develop分支。
- elease:预发布分支,主要是为发布做准备,从develop拉取然后在预发环境进行验证,用来修复一些bug。
- hotfix:热修复分支,当生产环境遇到需要紧急修复的情况,从master进行拉取进行修复并发布。
2.优缺点
优点:规则明确详细、每步操作都有详细的操作规范、适合各种复杂情况
缺点:规则复杂、学习成本高、分支维护复杂
3.适用场景
- 团队成员多、项目数量多
- 基于版本发布的开发模式、不适合持续发布模式
- 支持多版本并行开发模式
三、Github flow
相对于git flow复杂的分支管理模式,github flow的整个工作流相对简化了很多。
1.主要流程
- main/master 分支:用于发布正式版本的分支,只有待发布的代码才会被合并到该分支。
- feature分支:用于开发新功能的分支。每个功能都应该在一个单独的 feature 分支上进行开发,开发完成后再合并到 main/master 分支。
2.优缺点
- 优点:分支管理简单明了
- 缺点:不适合复杂情况
3.适用场景
- 小团队、项目数量少
- 敏捷开发、持续迭代和集成
四、Gitlab flow
1.主要流程
- main/master 分支:用于发布正式版本的分支。 与GitHub Flow 中的主干分支类似,只有可发布的代码会被合并到该分支。
- feature 分支:用于开发新功能的分支。每个功能都应该在一个单独的 feature 分支上进行开发,开发完成后再合并到main/master 分支。
- bugfix 分支:用于修复 Bug 的分支。当出现 Bug 时,开发者应该从 main/master分支上创建一个 bugfix 分支进行修复,并将修复后的代码合并到 main/master 分支。
- hotfix分支:用于紧急修复问题的分支。该分支是在 master 分支上针对生产环境的紧急修复,Bug 修复或安全漏洞修复等。
2.优缺点
- 优点:具有较为简单的分支管理策略
- 缺点:不适合复杂情况
3.适用场景
- 适合中小团队和企业的敏捷开发环境
总结
git工作流主要是团队在协作开发中需要遵守的一套代码管理和版本控制的流程规范,广泛应用的Git Flow、GitHub Flow、GitLab Flow工作流都有其合适的场景和特点。需要根据项目的具体需求和团队规模选择合适的工作流。
参考
1.git flow工作流:https://nvie.com/posts/a-successful-git-branching-model/