本文介绍我在工作中积累的一些工程实践, 不定期更新.
code review
效率git blame
和 git revert
commit
生成 ChangeLog
关于什么是良好的 git commit message
请看下面给出的几篇文章,本文只讲他们没有给出的工程实践问题:
commitizen
的流程不符合个人/团队的需求breaking changes
相信很多人看完上面的文章后, 发现流程跟自己想要的不符, 就此止步. 很遗憾, 我最初接触的时候, 也是这样. 这些文章的通病就是没有给出可以真正落地实施的方案, 虽然大家都觉得理念很好, 但是实践起来并不好用, 也就放弃了.
我最初的想法是自己写插件解决, 但是因为时间问题没有最终成行, 等我再次将这个想法提上日程的时候, 我发现了 cz-customizable 这个工具, 不但满足我的需求, 很多地方超出期望 : )
安装:
npm install -g commitizen
npm install -g cz-customizable
在项目根目录下加入下面两个文件:
下载链接: .cz-config.js package.json
package.json
{
"config": {
"commitizen": {
"path": "cz-customizable"
}
}
}
.cz-config.js
'use strict';
module.exports = {
// 不要更改types, 只允许出现这几种
types: [
{value: 'feat', name: 'feat: 新功能 (feature)'},
{value: 'fix', name: 'fix: 修复bug'},
{value: 'docs', name: 'docs: 文档 (documentation)'},
{value: 'style', name: 'style: 格式 (不影响代码运行的变动)'},
{value: 'refactor', name: 'refactor: 重构 (即不是新增功能,也不是修改bug的代码变动)'},
{value: 'test', name: 'test: 增加测试'},
{value: 'chore', name: 'chore: 构建过程或辅助工具的变动'},
],
// 按照项目模块, 自行配置
scopes: [
{name: 'exampleScope'},
{name: 'changeMe'}
],
// 可以根据匹配的类型不同, 显示不一样的scope, 动手实践下!
/*
scopeOverrides: {
fix: [
{name: 'merge'},
{name: 'style'},
{name: 'e2eTest'},
{name: 'unitTest'}
]
},
*/
allowCustomScopes: true,
allowBreakingChanges: ['feat', 'fix']
};
把需要使用 git commit
的地方 改为 git cz
, 按照交互式向导提示填写即可
图片很大, 但是很值得一看, 请耐心等待一会儿 : )