工作流:Feature Branching

446 阅读3分钟

#rickgao/git #git/flow/feature-branching

工作流:Feature Branching

分支开发、主干发布

![[Excalidraw/Drawing 2021-07-15 16.50.09 git 分支.excalidraw.md]]

image-20210715231431537

因部门分支策略历史:

  • 发布分支是product
  • 主干master作为稳定版本分支(每周自动合并product -> master)。

在该背景下,为了降低理解成本:==我们直接把product当成主干分支即可==。

Git分支可以分成两种分支

  • product(主干分支)
    • 预发布
    • 灰度
    • 线上
  • feature(特性分支)
    • 本地开发
    • 项目(测试)环境

步骤一:创建特性分支

product分支的基础上,checkout一个新的分支出来

git checkout product  # 确保在 product 分支上
git checkout -b feat_monitoring_rickgao_tapdid_0421 # 新建一个功能开发分支

分支名<分支类型>_<功能简称>_<作者>_<tapd的id>_<时间>

分支类型一般为

  • feat:开发新的功能
  • fix:修BUG
  • refac:重构、优化

image-20210421111020881

  • git checkout的本质就是移动HEAD
  • git checkout后面跟着的是branch的时候,即上图中的product就是一个branch,那git checkout product就表示:HEAD指向product

image-20210421112024096

image-20210421112247286

git checkout -b

git checkout命令意为创建并切换到一个新的分支。即,不仅可以创建一个新的分支,还可以通过一个命令同时切换它。

git checkout -b选项只不过是以下两个命令的组合:在执行git checkout <new-branch>之前执行git branch <new-branch>操作。

Syntax:

$ git checkout -b <branchname>

Output:

Git Checkout

上面的输出表示:创建了branch3并从master分支切换到branch3分支。

步骤二:编码与自测

当我们在新的分支下开发新功能,不断的git commit后,就会有以下这个图

image-20210421112646470

步骤三:自测与联调

当我们提测或者测试的时候,都会要有一个测试环境,测试环境添加项目后会自动给该项目添加一个测试分支,比如project_10917162_20210406

当我们有了测试分支的时候,我们先更新我们的本地分支,再切换到具体的测试分支

git pull # 更新本地分支
git checkout project_10917162_20210406 # 切换到测试分支
  • 测试环境的分支默认从master分支checkout出来的,如果没有及时自动合并会和product分支不一致。

image-20210421114235969

我们测试环境只不过是为了测试我们的功能,测试分支原本的样子及合并后的样子都不重要,所以我们直接让测试分支指向我们的特性分支即可,即执行命令

git reset --hard feat_monitoring_rickgao_tapdid_0421

git push的工程中经常会遇到要解决冲突,因为我们的效果就是直接要特性分支的代码,所以直接无视冲突即可

git push --force

image-20210421164304946

项目环境中:是直接访问到该分支项目文件下,所以在测试分支run buildpush就可以进行验证了

在项目环境时,我们经常会进行很多代码的修复。

面对特性分支和多出来的测试分支,有两种处理方式:

  • 直接忽略放弃特性分支,把测试分支等作特性分支
    • 通过git reset --hard重置了测试分支后,两者只是名字有区别
    • 完成直接忽略放弃原特性分支;把测试分支当做现特性分支
  • 把测试分支作为测试环境的发布分支
    • 即在特性分支修复,然后打包后merge到测试分支

image-20210421165051019

如果不需要的分支我们记得要去删除,比如:这里我不要了原特性分支了

git branch -d feat_monitoring_rickgao_tapdid_0421

步骤四:合并主干分支&&CR&&发布(预发布、灰度、线上)

项目环境验证完毕后,在Gitlab中申请合并代码,并发起CR;CR通过后进行打包及发布。

image-20210421165318674