Git Commit 规范笔记:Conventional Commits 入门指南
为什么需要规范 Commit?
很多人的 Git 提交记录是这样的:
update
fix bug
修改
完成
final
final2
最后一次提交
短期看没有问题,但是项目变大以后:
- 不知道某次修改影响了什么
- 不知道什么时候引入了 bug
- 无法快速定位历史版本
- 新人接手项目困难
一个好的 commit message 应该像项目日志一样:
通过 Git 历史,可以了解项目是如何一步步成长的。
Conventional Commits 格式
标准格式:
<type>(<scope>): <description>
例如:
feat(card): 增加卡片检索接口
拆解:
feat 类型
(card) 修改范围
增加... 做了什么
一、type 类型说明
1. feat —— 新功能
英文:
feature
表示:
增加新的功能。
使用场景:
- 新接口
- 新模块
- 新页面
- 新能力
示例:
feat(卡片): 增加卡片检索接口
feat(user): 添加用户注册功能
feat(api): 增加角色查询接口
记忆:
feature = 新东西
2. fix —— 修复 Bug
英文:
fix
表示:
修复已有问题。
示例:
fix(lua): 修复脚本加载异常
fix(cache): 修复缓存失效问题
fix(login): 修复登录状态丢失
记忆:
fix = 修东西
3. docs —— 文档修改
英文:
documents
表示:
只修改文档,不影响代码。
例如:
docs(API): 更新接口说明
docs(readme): 添加部署教程
docs(comment): 补充代码注释
包括:
- README
- API 文档
- 开发说明
记忆:
docs = document
4. refactor —— 重构
表示:
改代码结构,但是功能没有变化。
例如:
之前:
user.py
1000行
重构:
user/
├── service.py
├── repository.py
└── model.py
commit:
refactor(user): 重构用户模块结构
注意:
不是:
增加功能
而是:
让代码更合理
记忆:
refactor = 重新整理代码
5. perf —— 性能优化
英文:
performance
表示:
让程序运行更快。
例如:
perf(render): 优化卡图加载速度
perf(cache): 减少数据库查询次数
perf(search): 优化搜索性能
包括:
- CPU 优化
- 内存优化
- 查询优化
- 加载速度优化
记忆:
perf = performance
6. test —— 测试
表示:
添加或者修改测试。
例如:
test(card): 增加卡片解析测试
test(api): 添加接口测试
包括:
- 单元测试
- 集成测试
- 自动化测试
记忆:
test = 测试
7. build —— 构建相关
表示:
影响项目构建过程。
例如:
build(deps): 更新依赖版本
build(docker): 更新镜像配置
包括:
- 依赖升级
- 打包配置
- 编译配置
记忆:
build = 构建
8. ci —— 持续集成
英文:
Continuous Integration
表示:
CI/CD 自动化流程。
例如:
ci(github): 添加自动测试流程
ci(action): 修改 GitHub Actions 配置
包括:
- GitHub Actions
- Jenkins
- 自动部署
记忆:
ci = 自动化
9. chore —— 杂项维护
表示:
不属于功能、修复、优化的普通维护。
例如:
chore(repo): 清理无用文件
chore(config): 修改配置文件
chore(tool): 更新开发工具
包括:
- 删除垃圾文件
- 修改配置
- 工具升级
记忆:
chore = 日常杂务
二、实际开发最常用五个
不用全部背。
日常开发:
| 类型 | 使用频率 |
|---|---|
| feat | ⭐⭐⭐⭐⭐ |
| fix | ⭐⭐⭐⭐⭐ |
| refactor | ⭐⭐⭐⭐ |
| docs | ⭐⭐⭐ |
| perf | ⭐⭐⭐ |
这五个覆盖大部分情况。
三、快速判断口诀
增加东西
↓
feat
例:
增加缓存系统
修复问题
↓
fix
例:
修复缓存读取错误
改代码结构
↓
refactor
例:
拆分缓存模块
让它更快
↓
perf
例:
优化查询速度
写说明
↓
docs
例:
更新 API 文档
四、scope 怎么写?
scope 表示影响范围。
例如:
feat(card): 增加卡片搜索
scope:
card
表示:
修改的是卡片模块。
常见:
card 卡片
cache 缓存
api 接口
db 数据库
lua 脚本
render 渲染
user 用户
auth 登录认证
五、推荐提交风格
推荐:
feat(card): 增加卡片检索接口
fix(lua): 修复脚本加载异常
refactor(cache): 重构缓存层结构
perf(render): 优化卡图加载速度
docs(API): 更新接口说明
避免:
修改代码
更新一下
完成
修复
六、记忆总结
一句话:
feat 加东西
fix 修东西
refactor 改结构
perf 提速度
docs 写文档
test 写测试
build 改构建
ci 改流水线
chore 做杂务
真正开发时,只需要先判断:
「我是增加能力?修问题?整理结构?优化性能?写说明?」
基本就能选对。
最终推荐模板
以后提交直接套:
<type>(<模块>): <动作 + 结果>
例如:
feat(cache): 增加二进制缓存支持
fix(lua): 修复规则加载失败
refactor(card): 重构卡片数据映射流程
一个好的 commit,不是描述「我改了什么文件」,而是描述:
这个版本给项目增加了什么变化。
评论区