1.背景
我们在开发时一直以来对 Git Commit 格式没有严格的要求,所以就没落实明确的规范。
因为没有明确的规范,就会导致提交的消息较为随意。甚至出现「“1”、”Update”」这样的或者是重复的消息。


Git Commit Message 应该清晰明了,要用精简的语言说明本次提交的目的,其主要作用是为了后续的搜索、版本的回滚、合并冲突的追溯等操作。
为了解决规范问题,我参考了 Google 的开源项目 AngularJS 的规范。
2. Google AngularJS 规范介绍
这次主要介绍 AngularJS 的规范,它是由 Google 推出的一套提交消息规范标准,也是目前使用范围最广的规范。有一套合理的手册也较为系统化;并且还有配套的工具可以供我们使用。
下面是 Xmind 图:

3. 例子
1.提交一条依赖库变更,type 为 chore(增加依赖库);等提交完成后,使用 Git 工具进行搜索。
此时搜索类型是 chore(wms-bounding-picking),所以就能知道 拣货 工程所有的依赖库历史变更。
# 新增一条 Commit 记录
git commit -m 'chore(wms-bounding-picking):添加 com.alibaba.fastjson 依赖'
# 搜索跟 wms-bounding-picking 添加依赖相关的历史记录
git log HEAD --grep chore(wms-bounding-picking)
2.提交一条修复 bug 变更,type 为 fix(修复 bug);等提交完成后,使用 Git 工具进行搜索。
此时搜索类型是 fix(PickingTaskServiceImpl.java),所以就能知道 PickingTaskServiceImpl.java 文件所有的 bug 修复变更。
# 新增一条 Commit 记录
git commit -m 'fix(PickingTaskServiceImpl.java):修改拣货锁定任务未更新锁定人的bug'
# 搜索跟 PickingTaskServiceImpl.java 文件修复bug相关的历史记录
git log HEAD --grep fix(PickingTaskServiceImpl.java)
GitHub 上的标准参考案例:
angular
conventional-changelog
4.其他工具介绍以及参考文档
因为是 Google AngularJS 的标准规范,所以提供了多种工具。如生成 CHANGELOG.md,提交工具,检查工具。
工具列表:
- 提交工具 commitizen,如果是初学者,可以使用 commitizen 帮助我们生成消息
- 生成 CHANGELOG.md,把 Git Commit Message 的消息自动生成 CHANGELOG.md
- Message 检查,是否有 “不符合” 规范的内容,可以在 GitHook 中使用
commitizen
https://github.com/commitizen/cz-cli
https://github.com/conventional-changelog/conventional-changelog
https://github.com/marionebl/commitlint
中文规范
https://github.com/feflow/git-commit-style-guide
AngularJS 规范
https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#heading=h.greljkmo14y0