一、总体结构(3 行制,但不强制)

<type>(<scope>): <subject>

<body>

<footer>

90% 的提交只写第一行就够了


二、Type(必选)——干什么的?

👉 从下面选一个,不要自创

type含义示例
feat新功能feat: 支持导出 Excel
fix修 bugfix: 修复金额计算错误
docs文档docs: 更新接口说明
style代码格式style: 格式化 SQL
refactor重构refactor: 重构用户查询逻辑
perf性能优化perf: 优化报表查询性能
test测试test: 补充订单单元测试
chore杂项chore: 更新依赖版本
build构建相关build: 升级 webpack
ciCI/CDci: 调整流水线脚本

📌 记忆口诀

新功能 feat,修 bug fix,改结构 refactor,其它干杂活 chore


三、Scope(可选)——改哪儿了?

用来标注模块 / 子系统 / 目录

feat(order): 新增订单导出功能
fix(login): 修复验证码失效问题
refactor(sql): 重构报表查询逻辑

📌 规范建议:

  • 英文或拼音
  • 简短、统一(order / user / report)

四、Subject(必选)——一句话说明(最重要)

✅ 推荐写法

  • 动词 + 结果
  • 现在时
  • 不要句号
feat(order): 支持按日期导出订单
fix: 修复分页统计不准确的问题
refactor(user): 简化用户权限判断逻辑

❌ 不推荐

修改了一下
bug 修复
临时提交
test

五、Body(可选)——为什么要这么改?

适合:

  • 复杂逻辑
  • 业务规则
  • 修 bug 的背景
fix(report): 修复毛利率计算错误

原因:
- 原逻辑未排除退货订单
- 导致汇总数据偏高

解决:
- 过滤状态为 refund 的记录

六、Footer(可选)——关联信息

Closes #123
Refs JIRA-456
BREAKING CHANGE: 修改接口返回结构

七、Git 提交模板

1️⃣ 创建模板文件

vim ~/.gitmessage

内容:

# <type>(<scope>): <subject>
# 示例: feat(order): 支持订单导出

# 为什么要改?(可选)

# 影响范围 / 注意事项(可选)

2️⃣ 配置 Git

git config --global commit.template ~/.gitmessage

以后每次 git commit 自动带模板 👍