Git 分支规范

WorkFlow

首先,强烈建议学习一下阮一峰的 Git 工作流程,以及文中提到的相关文章。

常见的 WorkFlow 有三种:

根据实际情况,每个团队/项目可以选择上面三种 WorkFlow 之一,不能过于随意。

无论选择上面哪种 WorkFlow,都要注意 保持 masterbetarelease 等分支的同步,尽量使用 merge 而不是 cherry-pick,因为后者一但有遗漏会导致两份代码存在差异。

一些原则:

  1. 线上发生 bug 时,从发生 bug 的 tag 开出 bugfix 分支
    修复后 merge 回原分支以及受影响的其它 masterrelease 以及 beta 等分支

  2. feature 分支一般从 release 开出
    开发完成之后 merge 回 release 分支,上线后通过 release 分支 merge 回 master
    上线前 feature 分支的 bugfix 视为开发过程的一部分,在 feature 分支完成

  3. bugfixfeature 等分支一般不再开出子分支

  4. master 以外,developtestbetarelease 等其他任何分支不要长期使用
    例如长期持续使用 test/probeta/prorelease/pro 做 pro 环境的测试和发布,会导致它们可能与 master 分支存在差异、并且差异日积月累地增多,从而引发不必要的问题,正确的做法是:

  5. 每个版本开始时,从 master 开出 test/pro-22.9.1beta/pro-22.9.1release/pro-22.9.1 等分支

  6. 个人及 feature 分支 merge 到 test

  7. 测试通过后从 feature merge 到 beta —— 因为 test 分支可能比较混乱

  8. 上线时从 beta merge 到 release —— 确保 beta 环境和线上代码一样

  9. 上线之后在 release 分支打 tag(例如 release/pro-22.9.1)、merge 回 master、然后删掉

Screen Shot 2022-08-25 at 16.48.59.png {width=680px}

分支管理

为了配合 代码检查 以及适应各种 Git WorkFlow,Git 分支需要符合以下规范。

1. 开发分支

人员维度:

类型维度:

这些分支上的 push 可以不触发代码检查,但 无法作为 merge request 目标分支

2. 公共分支

用于测试、发布的保护分支要设置为保护分支:

这些分支上的 push/merge 以及 merge request 需要触发代码检查test/* 可选。

3. 保护分支设置

设置:Project > Settings > Repository > Protected Branches

规范/安全模式(推荐): > push 操作仅应急时使用 | | Allowed to merge | Allowed to push | | ------- | :----------------------- | :----------------------------------------------------------- | | master | Developers + Maintainers | Maintainers (仅用于紧急情况) (ci msg + " - IKNOWWHATIAMDOING") | | develop | Developers + Maintainers | Maintainers (仅用于紧急情况) (ci msg + " - IKNOWWHATIAMDOING") | 快速/粗放模式(**不推荐**): | | Allowed to merge | Allowed to push | | ------- | :----------------------- | :----------------------- | | master | Developers + Maintainers | Developers + Maintainers | | develop | Developers + Maintainers | Developers + Maintainers |

4. 定制分支

少量的可套用上面分支格式,发布分支需要强制检查,但 定制客户较多时建议 Fork 到新的仓库(代码可以 push/merge 会原仓库)

5. 历史分支

长期不用的分支建议打 tag 之后删除(从旧分支上创建名字符合规范的新分支,然后删除旧分支)

Code Review

在代码合并到 masterreleasebeta 分支时,需要通过 GitLab 的 merge request 流程进行 code review

SourceTree 里 Remote 设置 Optional extended integration —— Host Type 选 GitLab CE、Host 填 https://git.baijiashilian.com/,然后在 push 过的分支上右键即可 Create Pull Request;

版本规范

版本管理规范