Commit Message 是对一次 git commit
所包含的变动的概括。
遵循一定的 Commit Message 规范,并形成良好的实践,是开发者对于项目的理解、对于变动的管理、对于风险的控制等一系列能力的体现。
同时,良好的 Commit Message 内容还能帮助其他人,包括 Review 者理解项目的演进、快速抓住重点。
Commit Message 的格式应当符合 类型: 描述
或 类型(范围): 总结
。
类型用于说明当前提交的变动的影响模式,通常定义如下:
- 强调单一过程:
- feat:新增逻辑代码
- fix:修改已有的错误的逻辑代码
- tests:新增测试代码
- docs: 新增或修改文档内容
- chore:杂项变动,通常是构建过程或辅助工具链
- 一组过程带来的结果,通常避免附带逻辑变化:
- style:格式化或代码风格变化
- refactor:重构,改变逻辑代码的组织形式
- perf:优化,降低逻辑的执行成本
- 基于操作方式:
- revert:回滚 commit
- merge:合并其他分支
- sync:同步其他分支上的 commit
以上三大类类型定义,使用的频繁程度依次递减,涵盖变动的宽泛程度依次递增。
范围用来圈定变动的边界,通常和具体代码的组织形式强相关。编制和使用时应当遵循:
- 范围中可以存在层级关系,但避免存在过细的层级划分,一般以 2 ~ 3 层为宜,因项目而异。
- 不同类型的变动可以有不同的范围界定
- 针对类型划分,第一大类必须包含范围信息,第二大类应当包含范围信息
- 总结是在类型和范围的基础上加以延申,以简洁的语言给出变动的概况。
- 总结应当满足“言简意赅”的要求
-
在适应期内,格式规范的执行严格程度可以依类型的大类划分递减。
-
在适应期内,我们可以放松对于
范围
部分的要求,直到:- 本项目有了清晰的模块划分实践
- 模块可以相对简单地标示(有有效的缩写)
- 团队成员习惯了标注范围这一做法
在此之前,我们应当鼓励成员标注范围,并且将范围划分的混乱视作可接受的结果。