✅ Git Commit Message(提交说明)规范
最通用的是 Angular提交规范,也是行业最流行的,很多项目、GitHub自动生成CHANGELOG都依赖这套格式。
标准格式
<type>(<scope>): <subject>
<body>
<footer>可以只写第一行(简短提交,日常够用);复杂改动再补充 body 和 footer。
1. <type> 类型(必填,说明这次提交是做什么类型改动)
| type | 含义 | 使用场景 |
|---|---|---|
| feat | feature 新功能 | 新增功能,比如:增加深色主题 |
| fix | bug修复 | 修复页面报错、样式bug |
| docs | documentation 文档 | 只改注释、README,不改动业务代码 |
| style | 代码风格 | 空格、缩进、格式化;不改变代码逻辑 |
| refactor | 重构 | 代码重写优化,不加功能、不修bug |
| test | 测试 | 新增/修改测试代码 |
| chore | 杂项工程 | 构建脚本、依赖包、打包配置,和业务代码无关 |
日常最常用就4个:
feat、fix、docs、chore
2. <scope> 范围(可选,写哪个模块)
用来标注改动的模块,比如页面、组件、文件。 示例:
feat(theme): 增加深色主题fix(index.html): 修复切换主题闪烁问题
3. <subject> 主题(简短描述,最重要)
规则:
- 一句话,不超过50个字符
- 使用动词原形开头(增加、修复、优化,不是“增加了”)
- 不加句号结尾 ✅ 好例子:
feat(theme): 增加深色主题❌ 坏例子:feat: 增加了深色主题。(过去式+句号)
4. body 详细描述(可选,多行)
- 空一行和标题隔开
- 详细解释为什么改,改动带来什么影响,可以超过一行>
适合复杂提交,小提交不需要写body
5. footer 脚注(可选)
常用:关联issue、breaking change(破坏性改动) 比如:Closes #123 表示关闭编号123的任务/issue
📌 实际示例(直接可以拿来用)
示例1:简短单行(git commit -m 最常用)
git commit -m "feat(theme): 增加深色主题"git commit -m "fix(index.html): 修复深色模式文字对比度不足"git commit -m "docs: 更新README,补充主题切换说明"git commit -m "chore: 更新css打包配置"示例2:多行提交(不能只用一个 -m,需要打开编辑器写)
feat(theme): 增加深色主题
新增深色样式,可通过按钮切换明暗模式,保存用户选择到本地存储。
只修改index.html和style.css,不改动其他页面。❌ 反面教材(新手最容易写的烂提交)
git commit -m "改代码"👉 完全不知道改了啥,以后查历史白搭git commit -m "更新"👉 信息量为0git commit -m "很多修改,测试一下"👉 不清晰git commit -m "feat: 增加了深色主题。"👉 过去式+末尾句号
✨ 为什么要遵守这个规范?
- 看
git log/ gitk 的提交历史,一眼看懂每一笔提交做了什么 - 可以自动生成版本更新日志(CHANGELOG)
- 多人协作,别人看你的提交历史,快速定位问题
- 回滚、revert的时候,一眼看懂这条提交是干嘛的(就像你刚才git revert的场景)
📝 补充小技巧
- 小改动、单人项目:只写 type + subject 就足够
- 提交描述重点:写【这次改动的目的】,而不是单纯描述你敲了哪些字符>
不要写“修改index.html第30行”,要写“修复深色模式下导航栏错位”