内容简介:master->pre-production->production**Tag版本号:**Tag包括3位版本,前缀使用v。比如v1.2.31。Tag命名规范:
- 统一团队的Git工作流,包括分支使用、tag规范、issue等
- 统一团队的Git Commit日志标准,便于后续代码review,版本发布以及日志自动化生成
git工作流
-
git flow工作流:
- master为主分支,属保护分支,不能直接在此进行代码修改和提交。
- develop为日常使用分支。
- feature新功能分支,当完成一个功能并测试通过后进行合并到develop分支中。
- hotfix线上紧急漏洞修复分支,从master分支拉取创建,修复完bug后合并到master和develop分支中。
-
gitlab flow工作流(最大原则叫做"上游优先"(upsteam first),即只存在一个主分支master,它是所有其他分支的"上游"。只有上游分支采纳的代码变化,才能应用到其他分支):
master->pre-production->production
- master开发环境分支
- pre-production预发环境分支
- production生产环境分支
git commit规范
<type>(<scope>): <subject> <BLANK LINE> <body> <BLANK LINE> <footer> 复制代码
占位标签解析: type:代表某次提交的类型,比如是修复一个bug还是增加一个新的feature。所有的type类型如下: scope:scope说明commit影响的范围。scope依据项目而定, 例如在业务项目中可以依据菜单或者功能模块划分, 如果是组件库开发,则可以依据组件划分。 subject:是commit的简短描述 body:提交代码的详细描述 footer:如果代码的提交是不兼容变更或关闭缺陷,则Footer必需,否则可以省略。 feat[特性]:新增feature fix[修复]: 修复bug docs[文档]: 仅仅修改了文档,比如README, CHANGELOG, CONTRIBUTE等等 style[格式]: 仅仅修改了空格、格式缩进、都好等等,不改变代码逻辑 refactor[重构]: 代码重构,没有加新功能或者修复bug perf[优化]: 优化相关,比如提升性能、体验 test[测试]: 测试用例,包括单元测试、集成测试等 chore[工具]: 改变构建流程、或者增加依赖库、 工具 等 revert[回滚]: 回滚到上一个版本 复制代码
示例:
特性:添加头像功能 特性:添加收藏功能 修复:在android机器上传崩溃问题解决 文档:修改README,增加了使用说明 优化:首页图片加载缓慢优化 重构:对头像功能进行封装重构 复制代码
Git标签打包规范
**Tag版本号:**Tag包括3位版本,前缀使用v。比如v1.2.31。
Tag命名规范:
1.新功能开发使用第2位版本号,bug修复使用第3位版本号
2.首版本号是全新的功能类,功能模块上线才做的调整
项目名-日期
内容格式:<分类>---<内容>
<分类>:**新功能、bug修复、优化、依赖升级、重构、漏洞&补丁示例:
此图片引用自:我们的GIT工作流
Git Commit格式校验
- 准备commitlint/cli用于格式校验
- 准备husky用于git提交代码时触发校验
- 全局安装commitlint/cli
npm install -g @commitlint/cli @commitlint/config-conventional 复制代码
2.在项目根目录创建配置文件commitlint.config.js,可以使用以下命令创建
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js 复制代码
3.在配置文件中定义提交规范,可使用以下配置:
"module.exports = {extends: ['@commitlint/config-conventional']}" module.exports = { extends: ['@commitlint/config-conventional'], rules: { 'type-enum': [2, 'always', [ "feat", "fix", "docs", "style", "refactor", "test", "chore", "revert" ]], 'subject-full-stop': [0, 'never'], 'subject-case': [0, 'never'] } }; 复制代码
4.项目添加husky,进行git提交触发校验,安装如下:
npm install husky --save-dev 复制代码
5.安装完成后在package.json中配置如下信息
"scripts": { "commitmsg": "commitlint -e $GIT_PARAMS", }, "config": { "commitizen": { "path": "cz-customizable" } }, 复制代码
6.经过以上步骤,git commit的规范校验已经完成。可以进行代码提交了。
不规范提交>git commit -m "添加新功能" 提示: ⧗ input: 添加新功能 ✖ subject may not be empty [subject-empty] ✖ type may not be empty [type-empty] 规范提交>git commit -m "feat: 添加新功能" 复制代码
汉化与自定义校验规则
1.当前项目安装commitlint-config-cz,如下
npm install commitlint-config-cz --save-dev 复制代码
2.commitlint校验规则配置添加如下设置:
module.exports = { extends: [ 'cz' ] }; 复制代码
3.下载官方配置文件进行修改。 官方配置文件cz-config-EXAMPLE.js 。修改示例如下:
'use strict'; module.exports = { types: [ {value: '特性',name: '特性: 一个新的特性'}, {value: '修复',name: '修复: 修复一个Bug'}, {value: '文档',name: '文档: 变更的只有文档'}, {value: '格式',name: '格式: 空格, 分号等格式修复'}, {value: '重构',name: '重构: 代码重构,注意和特性、修复区分开'}, {value: '性能',name: '性能: 提升性能'}, {value: '测试',name: '测试: 添加一个测试'}, {value: '工具',name: '工具: 开发工具变动(构建、脚手架工具等)'}, {value: '回滚',name: '回滚: 代码回退'} ], scopes: [ {name: '用户模块'}, {name: '订单模块'}, {name: '社区模块'}, {name: '商品模块'} ], // it needs to match the value for field type. Eg.: 'fix' /* scopeOverrides: { fix: [ {name: 'merge'}, {name: 'style'}, {name: 'e2eTest'}, {name: 'unitTest'} ] }, */ // override the messages, defaults are as follows messages: { type: '选择一种你的提交类型:', scope: '选择一个scope (可选):', // used if allowCustomScopes is true customScope: 'Denote the SCOPE of this change:', subject: '简要说明:\n', body: '详细说明,使用"|"换行(可选):\n', breaking: '非兼容性说明 (可选):\n', footer: '关联关闭的issue,例如:#31, #34(可选):\n', confirmCommit: '确定提交?' }, allowCustomScopes: true, allowBreakingChanges: ['特性', '修复'], // limit subject length subjectLimit: 100 }; 复制代码
生成changelog
1.安装conventional-changelog,可以快速生成提交日志
npm install -g conventional-changelog-cli npm install -g cz-conventional-changelog 复制代码
2.项目根目录下添加 .czrc
配置文件,文件内容如下
{ "path": "cz-conventional-changelog" } 复制代码
3.在package.json中的scripts项增加如下指令
"version": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add CHANGELOG.md" 复制代码
4.执行npm run version即可在当前目录生成changelog日志了。
以上所述就是小编给大家介绍的《git 工作流和git commit规范》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- [JWFD开源工作流]JWFD开源工作流-矩阵引擎设计初步
- 前端工程工作流规范
- SharePoint PowerShell 启动工作流
- Git工作流规范 Beta
- 前端工作流中的hooks
- Unix 哲学指导工作流的构建
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
PHP典型模块与项目实战大全
杨宇 / 清华大学出版社 / 2012-1 / 79.00元
《PHP典型模块与项目实战大全》以实战开发为原则,以PHP典型模块和项目开发为主线,通过12个高质量的PHP典型模块和6个PHP大型应用,向读者揭示了Web开发的整体结构,并详尽地介绍PHP开发与建站的技术要点。《PHP典型模块与项目实战大全》附带1张DVD,内容是作者为《PHP典型模块与项目实战大全》录制的全程多媒体语音教学视频及《PHP典型模块与项目实战大全》所涉及的源代码。《PHP典型模块与......一起来看看 《PHP典型模块与项目实战大全》 这本书的介绍吧!