1. 开发环境简介

DEV:Development environment,开发人员本地使用

FAT:Feature Acceptance Test environment,功能验收测试环境,用于测试环境下的QA/PM测试使用。

UAT: User Acceptance Test environment,用户验收测试环境,用于生产环境下的QA/PM测试使用。

PRO:Production environment,生产环境/正式环境

2. 分支简介

master 主分支,用于部署到正式环境(PRO),一般由 releasehotfix 分支合并,任何情况下不允许直接在 master 分支上修改代码

release 预发布分支,用于部署到正式环境(UAT),始终保持与 master 分支一致,一般由 develophotfix 分支合并,不建议直接在 release 分支上直接修改代码。如果release 分支测试出问题,需要在develop分支上去做测试。

hotfix 紧急修复分支,命名规则为 hotfix- 开头

当线上出现紧急问题需要马上修复时,需要基于 releasemaster 分支创建 hotfix 分支,修复完成后,再合并到 releasedevelop 分支,一旦修复上线,该分支要删除。

develop 测试分支,于部署到测试环境(FAT),始终保持最新完成以及 bug 修复后的代码,可根据需求大小程度确定是由 feature 分支合并,还是直接在上面开发。 开发人员本地开发测试完成之后,再提交合并到该分支。

feature 功能开发分支,命名规则为 feature- 开头,一旦该功能上线,该分支要删除。

3. 开发场景

3.1 新功能开发

比如会员功能

从master创建一个分支 feature-user,研发本地开发测试ok(DEV),合并到develop(FAT),测试ok,再合并到release(UAT),如果没问题,合并到master,发布上线之后,删除分支 feature-user

中间如果某个环节有问题,在feature-user 分支下修改,重新走合并流程。

3.2 bug修改

比如 会员bug

从master 创建 hotfix-user 分支,本地开发测试完成之后(dev),直接合并到master,发布到线上,进行测试,测试没问题之后,合并到release,develop,然后分支删除。

__缺点:__这种方式存在一定到缺陷,比如我release有功能在测试,从master拉出分支之后,如果合并过去,可能会导致测试功能的时候,有外在因素引发的bug,增加测试的复杂度。

4. Commit 日志规范

日志格式: <type>(scope):<subject>

type: 类型

fix:修复 xxx Bug
feat:新增 xxx 功能
test:调试 xxx 功能
style:变更 xxx 代码格式或注释
docs:变更 xxx 文档
refactor:重构 xxx 功能或方法

scope: 范围

可分为:模块、类库、方法等

subject:简要描述