一、背景
好的 commit message,能够在多人协作的大型项目中,快速定位代码提交历史,回溯问题根源,提高团队效率。
commit message 是提交代码过程中的log,属于项目管理中一个重要的环节。
我们以前端 React 生态体系为例:
【路由】:react-router / react-router-redux等。
【状态管理】:flux 、redux、mobx等。
【UI库】:material、material-ui、react-toolbox等。
【工具】:Immutable、draft-js、css-modules、React Devtools、babel(es6、es7)、typescript
【项目构建】:webpack、fis3、gulp等。
【代码规范】:editorconfig、eslint、prettier等
【提交规范】:commit-lint、commit-message等
// 当然还有移动生态 例如:react-native
而今天我们要讨论的 commit message 属于 提交规范 这一基础环节。
下图是 React 的 commit message,非常清晰。
https://github.com/facebook/react/commits/mastergithub.com二、stock overflow 上的建议
Git Commit Messages : 50/72 Formatting (提交信息接近限制在50到72个字符)https://stackoverflow.com/questions/2290016/git-commit-messages-50-72-formattingstackoverflow.com
三、commit message
3.1 目的
在阅读代码时,可以通过 commit message 了解到作者编写某行代码时的背景;
回溯 bug 时可以通过搜索 commit message 快速定位相关的提交记录。
最重要的是养成好的习惯,提高团队和个人工作效率。
- 提供明确的历史信息(方便快速浏览)
- 可以过滤某些不必要的提交(方便快速查找)
- 自动化生成 Changelog(自动化)
- 基于提交的类型(分类)
3.2 基础指令
常用 Git 命令清单 - 阮一峰的网络日志www.ruanyifeng.comWorkspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
// 提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -a [message]
// 提交暂存区到仓库区
$ git commit -m [message]
3.3 安装依赖
第一步:替代 git commit
commitizen/cz-cligithub.com- commitizen/cz-cli: 替代你的 git commit(帮助我们生成符合规范的 commit message)
// [推荐全局安装] commitizen 为我们提供一些 cli 命令
// 比如:commitizen init、 git cz
$ npm install commitizen -g
- cz-conventional-changelog: 是一个
commitizen
的 adapter&