多人协作的项目中,如果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
根据提示选择选项