Git Flow 工作流

一、gitflow:版本分支管理策略(相当于对git的包装)

  1. GitFlow描述
  • 常用分支包括master、develop、feature、release、hotfix(support分支不常用)
  • 其中master、develop是远程分支,feature、release、hotfix是本地分支。
    • 远程分支是指需要push到gitlab、github远程仓库中
    • 本地分支指开发人员的本地开发时使用的git版本控制环境
  1. GitFlow流程图及描述理解
  • master:主干分支
  • 最稳定分支、功能完整、可随时发布线上环境(只读分支,只能从hotfix/release合并 不能修改)

  • 在master分支上的推送应该打tag记录追溯;

  • develop:开发分支 ß

    • 功能最新最全的分支,基于master分支克隆(仅首次克隆);
    • feature分支本地自测通过后合并到develop分支然后删除;
    • 收集所有上线功能后(包含所有发布到下一个release的代码)从delevop拉去release分支进行提测;
    • release/hotfix分支上线完毕,合并到develop并推送;
  • feature:功能开发分支

  • 开发某部分新功能,基于develop分支克隆,功能开发完毕且本地自测通过(编译完成且无异常)合并到develop分支;

  • 可存在多个feature分支,即团队多人同时开发创建多个临时分支,功能完成后可选删除;

  • release:测试分支

  • 用于提交给测试人员进行功能测试,基于feature分支合并到develop之后,从develop分支克隆;

  • 测试过程发现BUG在本分支进行修复,修复时创建修复分支bugfix-*,修复完所有bug上线后一次性合并到develop/master分支并推送(完成功能),推送master分支时打tag;

  • 临时分支,功能上线后可选删除(开启release测试后,不允许develop分支新功能继续合并到release分支,新功能需放到下一个release测试及发布);

  • hotfix:补丁分支

  • 基于master分支克隆,主要用于线上版本进行BUG修复;
  • 修复bug后合并到develop/master分支并推送(所有hotfix分支的修改会进入到下一个release),推送master分支时打tag;
  • 临时分支,修复bug后可选删除
  1. 开发准则与约定
  • 准则
    • 除了源码相关的东西之外,其他build产生的东西(如:maven的target文件夹,.idea文件夹等),均不能提交进入源码仓库,添加到.gitignore文件中忽略掉
    • 开发人员要严格按照我们约定的gitflow版本分支管理流程切换到指定分支,开发相应的功能
    • 任务完成后需要根据测试用例经过严格的自测才能推送develop,严禁将编译不通过,提交不完全的代码推送到远程分支
  • 约定:
    • 主分支名称:master 主开发分支:develop
    • 标签(tag)名称:v*. release,其中“*” 为版本号,“release” 小写,如:v1.0.0. release
    • 新功能开发分支名称:feature-,其中“” 为对应jira(Aone)上的任务编号
    • 发布分支名称:release-,其中“” 为版本号,“release”小写,如:release-1.0.0,release分支上修复bug的分支名称为bugfix-*
    • master的bug修复分支名称:hotfix-,其中“” 为对应jira(Aone)上的任务编号

二、测试部分

  • 本地git flow init 初始化仓库,提交develop分支
  • 提交到远程测试用github仓库(使用ssh公钥认证方式),可以看到develop分支已有第一次提交
  • 到tmp目录下新建工作目录,并clone下远程仓库到本地(模拟本地开发)
  • 初始化仓库后,拉取develop分支到本地进行开发。此时可以切出feature分支进行功能开发
  • 开发功能提交后进行提交到远程仓库并track远程分支。后续可以git push持续提交
  • 功能开发完成后,将分支合并到develop分支并删除本地feature分支(加上-F参数可以同时删除远程分支)

finish提交后即将新功能合并到develop分支,完成新功能开发。后续即执行release发布操作,步骤类似

欢迎关注我的其它发布渠道