Git Flow

什么是git

  1. 分布式存储 , 本地仓库包含了远程仓库的所有内容 . 安全性高 , 远程仓库文件丢失了也不怕
  2. 优秀的分支模型 , 创建/合并分支非常的方便
  3. 方便快速 , 由于代码本地都有存储 , 所以从远程拉取和分支合并时都非常快捷

当分支过多时,使用Git Flow的模式

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

主要工作流程

  1. 初始化项目为gitflow,默认创建master分支,然后从master拉取第一个develope分支
  2. 从develope拉取feature分支进行开发(多个开发人员拉取多个feature同时进行开发)
  3. feature分支完成后 , 合并到develop(不推送 , feature功能完成后需进行测),合并之后, 可以选择删除当前feature , 若不删除 . 则当前feature就不可更改了 , 必须从release分支继续编码修改
  4. 从evelope拉取release分支进行提测,提测过程中在release分支上修补BUG
  5. release分支上线后,合并release分支到develope/master并推送,合并之后, 可以选择删除当前release , 若不删除 . 则当前feature就不可修改了 , 必须从master拉取hotfix分支进行修改
  6. 上线之后若发现线上BUG,从master拉取hotfix进行BUG修改
  7. hotfix通过测试上线后,合并hotfix分支到develope/master并推送,合并之后, 可以选择删除当前hotfix , 若不删除 . 则当前feature就不可修改了 , 线上有问题也必须从master拉取hotfix分支进行修改
  8. 当进行一个feature时,若develope分支有变动,如其他功能完成并上线,则需要将完成的功能合并到自己的分支上,即合并develope到当前feature分支
  9. 当进行一个release时,若develope分支有变动,如其他功能完成并上线,则需要将完成的功能合并到自己的分支上,即合并develope到当前release分支

Git Flow工作流程图

Git Flow

支持Git Flow的图形化工具 - Source Tree