git分支管理规范

2020-10-26  本文已影响0人  一瓶多先生

所有使用了本规范的项目,必须严格规范操作,否则不予以合并代码、提测、打包上线等后续操作。

branch使用规范

分支约定

Git Flow有主分支和辅助分支两类分支。其中主分支用于组织与软件开发、部署相关的活动;辅助分支组织为了解决特定的问题而进行的各种活动

主分支是所有开发活动的核心分支。所有的开发活动产生的输出物最终都会反映到主分支的代码中。主分支分为master分支和develop分支。

主分支
master分支
develop分支
辅助分支

辅助分支是用于组织解决特定问题的各种软件活动的分支。辅助分支主要用于组织软件新功能的并行开发、简化新功能开发代码的跟踪、辅助完成版本发布工作以及对生产代码的缺陷进行紧急修复工作、以及对版本代码的测试。这些分支与主分支不同,通常只会在有限的时间范围内存在。

辅助分支包括:

以上这些分支都有固定的使用目的和分支操作限制。从单纯技术的角度说,这些分支与Git其他分支并没有什么区别,但通过命名,我们定义了使用这些分支的方法。

feature分支

使用规范:

如有几个同事同时开发,需要分割成几个小功能,每个人都需要从develop中拉出一个feature分支,但是每个feature颗粒要尽量小,因为它需要我们能尽早merge回develop分支,否则冲突解决起来就没完没了。同时,当一个功能因为各种原因不开发了或者放弃了,这个分支直接废弃,不影响develop分支。

release分支

使用规范:

release分支是为发布新的产品版本而设计的。在这个分支上的代码允许做小的缺陷修正、准备发布版本所需的各项说明信息(版本号、发布时间、编译时间等)。通过在release分支上进行这些工作可以让develop分支空闲出来以接受新的feature分支上的代码提交,进入新的软件开发迭代周期。

当develop分支上的代码已经包含了所有即将发布的版本中所计划包含的软件功能,并且已通过所有测试时,我们就可以考虑准备创建release分支了。而所有在当前即将发布的版本之外的业务需求一定要确保不能混到release分支之内(避免由此引入一些不可控的系统缺陷)。

成功的派生了release分支,并被赋予版本号之后,develop分支就可以为“下一个版本”服务了。所谓的“下一个版本”是在当前即将发布的版本之后发布的版本。版本号的命名可以依据项目定义的版本号命名规则进行。

hotfix分支

使用规范:

除了是计划外创建的以外,hotfix分支与release分支十分相似:都可以产生一个新的可供在生产环境部署的软件版本。
当生产环境中的软件遇到了异常情况或者发现了严重到必须立即修复的软件缺陷的时候,就需要从master分支上指定的TAG版本派生hotfix分支来组织代码的紧急修复工作。
这样做的显而易见的好处是不会打断正在进行的develop分支的开发工作,能够让团队中负责新功能开发的人与负责代码紧急修复的人并行的开展工作。

bugfix分支
分支责任分工
分支 职责描述
master 开发经理 :统一创建、维护, 运维人员: 部署,
develop 开发经理 :统一创建, 开发人员: 维护, 部署
release 开发经理 : 统一创建、维护, 运维人员:部署
feature 开发人员 :各模块自行创建、维护
fixbug 开发经理 :统一创建、部署、维护, 开发人员 :修复bug,协助解决自动merge中发生的冲突
分支对应的环境
分支 环境
Master/fixbug/hotfix 线上(release环境)
develop 开发(alpha环境)
release 测试(beta环境),预发布(RC环境)

tag使用规范

代码提交规范

基本要求

git Commit 日志规范

根据 angular 规范提交 commit, 这样 history 看起来更加清晰,还可以自动生成 changelog。


<type>(<scope>): <subject>

<BLANK LINE>

<body>

<BLANK LINE>

<footer>

type

提交 commit 的类型,包括以下几种

  • feat: 新功能
  • fix: 修复问题
  • docs: 仅仅修改了文档,比如README, CHANGELOG, CONTRIBUTE等等
  • style: 仅仅修改了空格、格式缩进、都好等等,不改变代码逻辑
  • refactor: 代码重构,没有加新功能或者修复bug
  • perf: 优化相关,比如提升性能、体验
  • test: 测试用例,包括单元测试、集成测试等
  • chore: 改变构建流程、或者增加依赖库、工具等
  • revert: 回滚到上一个版本
    scope
    修改文件的范围(包括但不限于 doc, middleware, core, config, plugin)

subject

用一句话清楚的描述这次提交做了什么

body

补充 subject,适当增加原因、目的等相关因素,也可不写。

footer

  • 当有非兼容修改(Breaking Change)时必须在这里描述清楚
  • 关联相关 issue,如 Closes #1, Closes #2, #3
    如果功能点有新增或修改的,还需要关联文档 docegg-init 的 PR,如 eggjs/egg-bin#123

示例:


fix($compile): [BREAKING_CHANGE] couple of unit tests for IE9

Older IEs serialize html uppercased, but IE9 does not...

Would be better to expect case insensitive, unfortunately jasmine does

not allow to user regexps for throw expectations.

Document change on eggjs/egg#123

Closes #392

BREAKING CHANGE:

  Breaks foo.bar api, foo.baz should be used instead

查看具体文档

项目权限

分支使用

代码提交

上一篇 下一篇

猜你喜欢

热点阅读