「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战」
一、分支管理
分支命名:
master 分支
- master 为主分支,也是用于部署生产环境的分支,确保master分支稳定性
- master 分支一般由develop以及hotfix分支合并,任何时间都不能直接修改代码
test分支
- test 为测试分支,发布提测阶段,会以test分支代码为基准提测
release分支
- release 为预上线分支
feature 分支
- 开发新功能时,以master为基础创建feature分支
- 分支命名: feature/ 开头的为特性分支, 命名规则: feature/xxx_module、 feature/xxx_module
hotfix 分支
- 分支命名: hotfix/ 开头的为修复分支,它的命名规则与 feature 分支类似
- 线上出现紧急问题时,需要及时修复,以master分支为基线,创建hotfix分支,修复完成后,需要合并到test分支、master分支和develop分支
流程:
- 当有一组feature开发完成,首先会合并到develop分支,进入提测时,会合并到test分支。
- 如果测试过程中若存在bug需要修复,则由开发者在自己feature分支修复并提交,重复上面流程。
- 当测试完成之后,合并feature分支到master和develop分支,此时master为最新代码,用作上线。
常见任务:
> 1. 增加新功能
> (master)$: git checkout -b feature/xxx # 从master建立特性分支
> (feature/xxx)$:
> (feature/xxx)$: git add xxx
> (feature/xxx)$: git commit -m 'commit comment'
> (develop)$: git merge feature/xxx --no-ff # 把特性分支合并到develop
>
> 2. 修复紧急bug
> (master)$: git checkout -b hotfix/xxx # 从master建立hotfix分支
> (hotfix/xxx)$:
> (hotfix/xxx)$: git add xxx
> (hotfix/xxx)$: git commit -m 'commit comment'
> (master)$: git merge hotfix/xxx --no-ff # 把hotfix分支合并到master,并上线到生产环境
> (develop)$: git merge hotfix/xxx --no-ff # 把hotfix分支合并到develop,同步代码
>
> 3. 测试环境代码
> (test)$: git merge develop --no-ff # 把develop分支合并到test,然后在测试环境拉取并测试
>
> 4. 生产环境上线
> (master)$: git merge testing --no-ff # 把testing测试好的代码合并到master
> (master)$: git tag -a v1.2.1 -m '部署包版本描述' # 给版本命名,打Tag
# 版本号规范说明:
# Major.Minor.Patch ,也就是Major 是主版本号、Minor是次版本号、而 Patch 为修订号。每个元素必须以数值来递增。
# 主版本号:
# 每次一个比较大的功能的发版,可以理解为一次迭代,具体也可以根据自己开发的项目来定。每次递增时,次版本号和修订号都要归零。
# 次版本号:
# 每次做出小的功能新增时,发布的版本号。每次递增时,修订号都要归零。
# 修订号:
# 修复bug时发布的版本。
git merge 和 git merge --no-ff的区别(一张图来快速了解一下)
二、日志规范
在一个团队协作的项目中,开发人员需要经常提交一些代码去修复bug或者实现新的feature。而项目中的文件和实现什么功能、解决什么问题都会渐渐淡忘,最后需要浪费时间去阅读代码。但是好的日志规范commit messages编写有帮助到我们,它也反映了一个开发人员是否是良好的协作者。 编写良好的Commit messages可以达到3个重要的目的:
- 加快review的流程
- 帮助我们编写良好的版本发布日志
- 让之后的维护者了解代码里出现特定变化和feature被添加的原因
来自Angular 规范是目前使用最广的写法,比较合理和系统化。
Commit messages的基本语法:
当前业界应用的比较广泛的是 Angular Git Commit Guidelines 具体格式为:
- type: 本次 commit 的类型,诸如 bugfix docs style 等
- scope: 本次 commit 波及的范围
- subject: 简明扼要的阐述下本次 commit 的主旨,在原文中特意强调了几点 1. 使用祈使句,是不是很熟悉又陌生的一个词,来传送门在此 祈使句 2. 首字母不要大写 3. 结尾无需添加标点
- body: 同样使用祈使句,在主体内容中我们需要把本次 commit 详细的描述一下,比如此次变更的动机,如需换行,则使用 |
- footer: 描述下与之关联的 issue 或 break change
Type的类别说明:
- feat: 添加新特性
- fix: 修复bug
- docs: 仅仅修改了文档
- style: 仅仅修改了空格、格式缩进、逗号等等,不改变代码逻辑
- refactor: 代码重构,没有加新功能或者修复bug
- perf: 增加代码进行性能测试
- test: 增加测试用例都好
- chore: 改变构建流程、或者增加依赖库、工具等
- revert:回滚某个更早之前的提交
- build:主要目的是修改项目构建系统(例如 glup,webpack,rollup 的配置等)的提交
- ci:主要目的是修改项目继续集成流程(例如 Travis,Jenkins,GitLab CI,Circle等)的提交
简单实例:
git commit -m 'feat: 增加 xxx 功能'
git commit -m 'fix: 修复 xxx 功能'
#### Commit messages格式要求:
# 标题行:50个字符以内,描述主要变更内容
# 主体内容:更详细的说明文本,建议72个字符以内。 需要描述的信息包括:
* 为什么这个变更是必须的? 它可能是用来修复一个bug,增加一个feature,提升性能、可靠性、稳定性等等
* 他如何解决这个问题? 具体描述解决问题的步骤
* 是否存在副作用、风险?
# 如果需要的化可以添加一个链接到issue地址或者其它文档