简介
多人协作的项目中,如果 Git 的提交说明精准,在后期协作以及 Bug 处理时会变得有据可查,项目的开发可以根据规范的提交说明快速生成开发日志,从而方便开发者或用户追踪项目的开发信息和功能特性。
结构说明
总体
Git
提交说明可分为三个部分:Header
、Body
和Footer
。结构如下
<Header> <Body> <Footer>
Header
Header
部分包括三个字段type
(必需)、scope
(可选)和subject
(必需)。结构如下
<type>(<scope>): <subject>
type
值 | 描述 |
---|---|
eat | 新增一个功能 |
fix | 修复一个 Bug |
docs | 文档变更 |
style | 代码格式(不影响功能,例如空格、分号等格式修正) |
refactor | 代码重构 |
perf | 改善性能 |
test | 测试 |
build | 变更项目构建或外部依赖(例如 scopes: webpack、gulp、npm 等) |
ci | 更改持续集成软件的配置文件和 package 中的 scripts 命令,例如 scopes: Travis, Circle 等 |
chore | 变更构建流程或辅助工具 |
revert | 代码回退 |
scope
`scope`说明`commit`影响的范围。`scope`依据项目而定,例如在业务项目中可以依据菜单或者功能模块划分,如果是组件库开发,则可以依据组件划分。该值可以省略
subject
项目简短描述
Body
`commit`的详细描述,说明代码提交的详细说明。
Footer
1.如果代码的提交是**不兼容变更**或**关闭缺陷**,则`Footer`必需,否则可以省略. 2.当前代码与上一个版本不兼容,则`Footer`以**BREAKING CHANGE**开头,后面是对变动的描述、以及变动的理由和迁移方法 3.如果当前提交是针对特定的issue,那么可以在`Footer`部分填写需要关闭的单个 issue 或一系列issues
安装
使用 npm 进行安装
npm install -g commitizen cz-conventional-changelog npm i -g cz-customizable
写入配置
echo'{ "path": "cz-customizable" }' > ~/.czrc
在 $HOME 下创建.cz-config.js 文件,内容如下
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: 'app模块' }, { name: '运营后台' }], allowTicketNumber: false, isTicketNumberRequired: false, ticketNumberPrefix: 'TICKET-', ticketNumberRegExp: '\\d{1,5}', // 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: '自定义scope:', subject: '短说明:\n', body: '长说明,使用"|"换行(可选):\n', breaking: '非兼容性说明 (可选):\n', footer: '关联关闭的issue,例如:#31, #34(可选):\n', confirmCommit: '确定提交说明?' }, allowCustomScopes: true, allowBreakingChanges: ['特性', '修复'], // skip any questions you want skipQuestions: ['body', 'footer'], // limit subject length subjectLimit: 100, // breaklineChar: '|', // It is supported for fields body and footer. // footerPrefix : 'ISSUES CLOSED:', // default value };
使用方式
进入 git 管理的目录
修改部分文件,执行 add
git add ./
使用 git cz 替换 git commit
根据提示选择选项
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于