Git Flow
什么是git
- 分布式存储 , 本地仓库包含了远程仓库的所有内容 . 安全性高 , 远程仓库文件丢失了也不怕
- 优秀的分支模型 , 创建/合并分支非常的方便
- 方便快速 , 由于代码本地都有存储 , 所以从远程拉取和分支合并时都非常快捷
当分支过多时,使用Git Flow的模式
Git Flow的常用分支
分支简介
- 天蓝色圆点所在的线为我们源码的主线(master)。
- 天蓝色方形指向的节点就是每一个发布版本的标签(tag)。
- 紫色圆点所在的线为主要分支线(develop)。
- 橙色圆点所在的线为新功能开发分支线(feature)。
- 绿色圆点所在的线为新版本发布线(release)。
- 红色圆点所在的线为发布版本bug修复线(hotfix)。
master
- 主分支,产品的功能全部实现后,最终在master分支对外发布
- 该分支为只读唯一分支,只能从其他分支( ** release/hotfix ** )合并,不能再此分支修改
- 所有的master分支推送应该打标签做记录,方便追溯
- 例如release合并到master,或hotfix合并到master
develop
- 主开发分支,基于master分支克隆
- 包含所有要发布到下一个release的代码
- 该分支为只读唯一分支,只能从其他分支合并
- feature功能分支完成,合并到develope(不推送)
- develope拉取release分支,提测
- release/hotfix分支上线完毕,合并到develope并推送
feature
- 功能开发分支,基于develope分支克隆,主要用于新需求新功能的开发
- 功能开发完毕后合并到develope分支(未正式上线之前不推送到远程仓库)
- feature分支可同时存在多个,用于团队中多个功能同时开发,属于临时分支,功能完成后可选删除
release
- 测试分支,基于feature分支合并到develope之后,从develope分支克隆
- 主要用于提交给测试人员进行功能测试,测试中发现BUG在本分支进行修复,修复完成上线后合并到develope/master分支并推送,打Tag
- 属于临时分支,功能上线后可选删除
hotfix
- 补丁分支,基于master分支克隆,主要用于对线上的版本进行BUG修复
- 修复完毕后合并到develope/master分支并推送,打Tag
- 属于临时分支,补丁修复上线后可选删除
- 所有hotfix分支的修改会进入到下一个release
主要工作流程
- 初始化项目为gitflow,默认创建master分支,然后从master拉取第一个develope分支
- 从develope拉取feature分支进行开发(多个开发人员拉取多个feature同时进行开发)
- feature分支完成后 , 合并到develop(不推送 , feature功能完成后需进行测),合并之后, 可以选择删除当前feature , 若不删除 . 则当前feature就不可更改了 , 必须从release分支继续编码修改
- 从evelope拉取release分支进行提测,提测过程中在release分支上修补BUG
- release分支上线后,合并release分支到develope/master并推送,合并之后, 可以选择删除当前release , 若不删除 . 则当前feature就不可修改了 , 必须从master拉取hotfix分支进行修改
- 上线之后若发现线上BUG,从master拉取hotfix进行BUG修改
- hotfix通过测试上线后,合并hotfix分支到develope/master并推送,合并之后, 可以选择删除当前hotfix , 若不删除 . 则当前feature就不可修改了 , 线上有问题也必须从master拉取hotfix分支进行修改
- 当进行一个feature时,若develope分支有变动,如其他功能完成并上线,则需要将完成的功能合并到自己的分支上,即合并develope到当前feature分支
- 当进行一个release时,若develope分支有变动,如其他功能完成并上线,则需要将完成的功能合并到自己的分支上,即合并develope到当前release分支
Git Flow工作流程图
支持Git Flow的图形化工具 - Source Tree