git分支管理规范(摘抄)
分支管理规范
master
分支- 主分支,永远处于稳定状态,对应当前线上版本
- 以
tag
标记一个版本,因此在master
分支上看到的每一个tag
都应该对应一个线上版本 - 不允许在该分支直接提交代码,只允许
release
分支合并或者hotfix
分支合并
develop
分支- 开发分支,包含了项目最新的功能和代码,所有开发都依赖
develop
分支进行 - 小的改动可以直接在
develop
分支进行,改动较多时切出新的feature
分支进行
注: 更好的做法是 develop 分支作为开发的主分支,也不允许直接提交代码。小改动也应该以 feature 分支提 merge request 合并,目的是保证每个改动都经过了强制代码 review,降低代码风险
- 开发分支,包含了项目最新的功能和代码,所有开发都依赖
feature
分支- 功能分支,开发新功能的分支
- 开发新的功能或者改动较大的调整,从
develop
分支切换出feature
分支,分支名称为feature/idxxx
- 开发完成后合并回
develop
分支并且删除该feature/idxxx
分支
release
分支- 这是发布分支,新功能合并到
develop
分支后,基于develop
分支准备发布新版本时使用的分支 - 当
develop
分支完成功能合并和部分bug fix
,准备发布新版本时,切出一个release
分支,来做发布前的准备,分支名约定为release/xxx
- 发布之前发现的 bug 就直接在这个分支上修复,确定准备发版本就合并到
master
分支,完成发布,同时合并到develop
分支
- 这是发布分支,新功能合并到
hotfix
分支- 紧急修复线上 bug 分支
- 当线上版本出现 bug 时,从
master
分支切出一个hotfix/xxx
分支,完成 bug 修复,然后将hotfix/xxx
合并到master
和develop
分支(如果此时存在release
分支,则应该合并到release
分支),合并完成后删除该hotfix/xxx
分支
概述
以上就是在项目中应该出现的分支以及每个分支功能的说明。 其中稳定长期存在的分支只有 master
和 develop
分支,别的分支在完成对应的使命之后都会合并到这两个分支然后被删除。简单总结如下:
master
分支: 线上稳定版本分支develop
分支: 开发分支,衍生出feature
分支和release
分支release
分支: 发布分支,准备待发布版本的分支,存在多个,版本发布之后删除feature
分支: 功能分支,完成特定功能开发的分支,存在多个,功能合并之后删除hotfix
分支: 紧急热修复分支,存在多个,紧急版本发布之后删除
提交规范
听说用的比较多的是Angular的标准
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
type
: 本次 commit 的类型,诸如 bugfix docs style 等,在下方有说明scope
: 本次 commit 波及的范围subject
: 简明扼要的阐述下本次 commit 的主旨- 使用现在时的命令性语气 ,present tense: “change” not “changed” nor “changes”.
- 首字母不要大写
- 结尾无需添加标点
body
: 应包括改变的动机,并将其与以前的行为进行对比。如需换行,则使用 |。footer
: 描述下与之关联的issue
或break change
。可以附上issue链接。公司内部应该很少会用到
Type
的类别说明:
feat
: 添加新特性fix
: 修复bugdocs
: 仅仅修改了文档style
: 仅仅修改了空格、格式缩进、都好等等,不改变代码逻辑refactor
: 代码重构,没有加新功能或者修复bugperf
: 增加代码进行性能测试test
: 增加测试用例chore
: 改变构建流程、或者增加依赖库、工具等
示例
也是最小需要的提交信息,至少需要type
和commit
feat: 用户登录
fix: 用户权限bug