Git Commit 规范
引言
项目开发时,一个好的 Commit Message 至关重要:
- 可以使自己或者其他开发人员能够清晰地知道每个 commit 的变更内容,方便快速浏览变更历史,比如可以直接略过文档类型或者格式化类型的代码变更。
- 可以基于规范化的 Commit Message 生成 Change Log。
- 可以依据某些类型的 Commit Message 触发构建或者发布流程,比如当 type 类型为 feat、fix 时我们才触发 CI 流程。
确定语义化版本的版本号。比如 fix 类型可以映射为 PATCH 版本,feat 类型可以映射为 MINOR 版本。带有 BREAKING CHANGE 的 commit,可以映射为 MAJOR 版本。
可以基于这些 Commit Message 进行过滤查找,比如只查找某个版本新增的功能:
1 | git log --oneline --grep "^feat|^fix|^perf" |
基本原则
- 明确性:每条提交信息应清晰地描述此次提交的目的和影响。
- 简洁性:避免冗长的提交信息,保持精炼。
- 一致性:遵循统一的格式和约定,使所有提交信息风格一致。
- 可追溯性:通过提交信息,可以轻松追踪代码变更的原因和背景。
提交信息格式
- 类型(type):表示提交的范畴,如
feat
,fix
,docs
,style
,refactor
,perf
,test
,chore
等。 - 范围(scope):可选,表示提交影响的模块或文件。
- 主题(subject):简短描述此次提交的核心内容。
类型说明
- feat:新功能(feature)
- fix:修复 bug
- docs:文档(documentation)
- style:代码格式(不影响代码运行逻辑)
- refactor:重构(既不是新增功能,也不是修复 bug)
- perf:性能优化
- test:增加缺失的测试
- chore:构建过程或辅助工具的变动
范围说明
范围用于标识提交影响的特定部分,例如 ui
, api
, auth
等。如果提交影响多个范围,或者没有特定范围,可以省略此部分。
主题说明
主题应以祈使语气开始,例如“添加”,“修复”,“删除”等,并且首字母小写,不以句号结尾。
示例
feat(user): add login page
添加用户登录页面。fix(api): resolve 404 error
解决 API 返回 404 错误的问题。docs(readme): update installation guide
更新安装指南。
一个遵循 Angular 规范的 commit 历史记录:
额外细节
对于更复杂的更改,可以在主体下方添加更详细的描述,包括更改的动机、对比之前的解决方案、可能的副作用等。如果有必要,还可以添加一个“BREAKING CHANGE: ”标签,后跟破坏性变更的描述。
结语
为了更好地遵循 Angular 规范,建议在提交代码时养成不用 git commit -m,即不用-m 选项的习惯,而是直接用 git commit 或者 git commit -a 进入交互界面编辑 Commit Message。这样可以更好地格式化 Commit Message。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Fan's Coding Lab 🏆!
评论