最近面试 有人问到 你带了一个团队 当你离开 留下了什么 回想一下 感觉做了很多 但 却无从下口 感觉标准化了很多 但其实 和大厂看来 差距还是太大了 所以 学习之路就在脚下 学吧
今天聊聊 commit message标准化 我一直觉得 认真编写 message 就是很严格的要求 但其实 大厂来说 哪怕 message 都要遵循标准的格式 其实可以理解 毕竟标准的格式 就可以演变出 很多优化后的结果
目前 市面上 流行的 commit message 格式 就是 angular 提出的 格式
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
Header 是必需的 也就是 <type>(<scope>): <subject> ,Body 和 Footer 可以省略。
主要说下Header
Header部分只有一行,包括三个字段:type(必需)、scope(可选)和subject(必需)。
(1)type
type用于说明 commit 的类别,只允许使用下面7个标识。
feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
style: 格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:构建过程或辅助工具的变动
如果type为feat和fix,则该 commit 将肯定出现在 Change log 之中。其他情况(docs、chore、style、refactor、test)由你决定,要不要放入 Change log,建议是不要。
(2)scope
scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
(3)subject
subject是 commit 目的的简短描述,不超过50个字符。
以动词开头,使用第一人称现在时,比如change,而不是changed或changes
第一个字母小写
结尾不加句号(.)
其他内容可以 查看 阮一峰 老师的 讲解 http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html
如果 你去强制 团队的人 做这个 肯定不好推广 且 确实浪费时间 那么 我们使用 插件 去解决这个事吧
Commitizen
指令
// 下载模块
npm install -g commitizen
// 设置成按照angular规范 编写commit message
commitizen init cz-conventional-changelog --save --save-exact
剩下操作就可以了
不要再git commit -m '斯蒂芬斯蒂芬森发' 使用 指令 git cz 后 根据控制台可视化的 提交 message
下面说说 change log
// 下载模块
npm i -D conventional-changelog-cli
然后 为了方便 . 我们 在 package.json里 定义2个script 快捷操作
"scripts": {
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0"
"commit": "git cz"
},
这样 npm run changelog 就 会在本地 生成 CHANGELOG.md 文件
这样 npm run commit 就是 按照 angular标准 完成git 的 commit message 操作