跳到主要内容

Git多分支管理

暂不涉及到hotfix合并release的部分。且主要针对于devops流水线开发模式。

分支说明

项目维护关键分支有release分支、test分支。开发端的分支有dev、feat、fix等等分支。

其中release分支不由开发合并,它作为预发布分支,在一切的开发测试完成之后由test分支推送到release分支。

test分支当成dev分支使用的错误场景

这是对之前已经出现的情况进行的复盘,主要的情况是test分支当成dev分支,一开发完mr就直接merge到test分支。

如果开发比较提前,把第三批的需求和第二批的需求都完成,提交mr合并到test分支,并且第二批和第三批都在第二批交付前合并到test分支了,那么第二批上线的时候可能把第三批的提交也一起上线了。(这是一个不规范、危险的操作,很多时候可能出线上问题,除非前后端一起不规范,都将第三批需求的开发一起上线。)

引入dev分支

在没有引入dev分支的时候,在devops上进行一个分支部署的测试就可能会出现问题,如果对于一个子项目,有很多个新功能需求或者bug修复,并且他们都是在同一个批次的需求。现在要将这些修改后的所有需求统一部署在devops上进行统一测试,如果没有dev分支那就没办法统一测试,因为devops一次性只能部署一个分支。那么我就要在将这些feat、fix全部合并在dev分支上,然后用dev分支去部署流水线进行测试。

分支的操作范围 操作范围就是,这些分支进行哪些分支的合入合出,能做哪些变更。

  1. dev分支,这个分支永远不做mr,所有的feat、fix分支改动都直接在本地进行合并之后推送到远程仓库。
  2. feat和fix分支这些在本地合并到dev分支后,还会推送到远程分支,然后提合并到test分支的mr,这个mr会在dev分支上进行的所有测试之后,提测之前,合并到test分支上。
  3. test分支,它由开发者和测试者来维护,开发在提测前把提交都合入test,然后测试就进行测试,测试完成之后由测试来把test合并到release分支。

总结流程

新起一个项目,首先有个release分支来作为预发布,从release拉一个test分支作为测试分支。

开发开始后

  1. 从test分支上拉取feat或fix等分支进行开发
  2. 将feat或fix等分支推送到远端,提交mr
  3. 将feat或fix等分支合并到本地dev分支,推送到远端dev分支,Ï将远端dev分支部署流水线
  4. 进行冒烟测试等提测前的内容

提测前

  1. 将mr通过,merge到test分支