在正规公司中,Git提交消息通常遵循Conventional Commits规范(约定式提交),这是一种结构化的提交消息格式,便于自动化工具生成变更日志、版本管理和代码审查。以下是完整的提交消息格式模板和示例:


基础格式规范

<类型>[<可选的作用域>]: <描述>

[可选的正文]

[可选的脚注]

1. 提交类型(Type)

类型

说明

示例场景

feat

新功能

添加用户登录功能

fix

修复Bug

修复按钮点击无响应问题

docs

文档变更

更新API文档

style

代码格式化(不影响逻辑)

调整代码缩进/空格

refactor

重构代码

将函数式改为面向对象

perf

性能优化

优化数据库查询速度

test

测试相关

添加单元测试

build

构建系统/依赖变更

升级Webpack版本

ci

CI/CD配置变更

修改GitHub Actions工作流

chore

其他杂项

更新.gitignore文件

revert

回滚提交

Revert "feat: 添加支付功能"


2. 完整模板示例

基础格式

<类型>[<作用域>]: <描述>

带正文的完整格式

<类型>[<作用域>]: <描述>

## 变更内容

- 变更点1

- 变更点2

## 变更原因

[说明变更背景或动机]

## 注意事项

[兼容性说明/配置要求等]

Closes #<Issue编号>

3. 实际场景示例

示例1:新功能(feat)

feat(auth): 添加OAuth2第三方登录

## 变更内容

- 集成Google OAuth2认证流程

- 新增用户授权令牌管理接口

- 添加登录状态持久化机制

## 变更原因

支持用户使用第三方账号快速登录,提升注册转化率

Closes #123

示例2:修复Bug(fix)

fix(cart): 修复购物车商品数量计算错误

## 变更内容

- 修正商品折扣叠加计算逻辑

- 添加边界条件校验(负数/零值)

- 更新相关单元测试用例

## 变更原因

用户反馈购买多件商品时总价计算异常

Closes #456

Related to #789

示例3:文档更新(docs)

docs(api): 更新支付接口文档

## 变更内容

- 补充V3版支付接口参数说明

- 添加错误码对照表

- 更新cURL请求示例

## 变更原因

支付接口升级至V3版本,需要同步文档

示例4:重构(refactor)

refactor(order): 重构订单处理模块

## 变更内容

- 将订单状态机改为策略模式

- 优化数据库查询性能(减少3次查询)

- 统一错误处理机制

## 变更原因

原有代码耦合度高,难以扩展新支付方式

示例5:破坏性变更(BREAKING CHANGE)

feat(api): 用户接口返回格式标准化

## 变更内容

- 统一所有用户接口返回格式为{code, data, msg}

- 移除废弃字段user.level

- 新增分页参数page_size

## 变更原因

提升API一致性,便于前端统一处理

BREAKING CHANGE:

1. user.level字段已删除,改用user.roles

2. 分页参数从count改为page_size

3. 错误码体系变更(详见迁移指南)

Closes #789

4. 高级规范

作用域(Scope)

用于标识变更影响的模块/组件:

feat(ui): 添加日期选择器组件 # 作用域:UI层

fix(api): 修复用户查询超时问题 # 作用域:API层

perf(db): 优化订单表索引 # 作用域:数据库

脚注(Footer)

常见脚注类型:

Closes #123 # 关闭Issue

Related to #456 # 关联Issue

BREAKING CHANGE: # 破坏性变更说明

Reviewed-by: @alice # 代码审查者

多Issue关联

fix(payment): 修复支付宝回调验证失败

Closes #123, #456

Related to #789

5. 公司内部最佳实践

提交前检查清单

  1. ✅ 类型是否准确

  2. ✅ 描述是否简洁(<50字符)

  3. ✅ 是否关联Issue

  4. ✅ 破坏性变更是否标注

  5. ✅ 是否需要添加测试

  6. ✅ 文档是否同步更新

团队协作建议

### 提交消息规范(团队版)

1. 强制要求:

 - 必须使用Conventional Commits格式

 - 每次提交必须关联Issue

 - 破坏性变更需在代码评审中明确说明

2. 工具支持:

 - 使用commitizen交互式生成提交消息

 - 配置commitlint进行提交前检查

 - 集成standard-version自动生成变更日志

3. 示例命令:

 ```bash

 # 安装工具

 npm install -g commitizen conventional-changelog

 # 生成提交消息

 git cz

---

### 6. 工具配置示例

#### commitlint配置(.commitlintrc.js)

```javascript

module.exports = {

 extends: ['@commitlint/config-conventional'],

 rules: {

 'scope-case': [2, 'always', 'lower-case'],

 'subject-empty': [2, 'never'],

 'type-empty': [2, 'never'],

 'type-enum': [

 2,

 'always',

 ['feat', 'fix', 'docs', 'style', 'refactor', 'perf', 'test', 'build', 'ci', 'chore', 'revert']

 ]

 }

};

总结

  1. 核心原则:清晰、简洁、机器可读

  2. 必备要素:类型 + 描述 + Issue关联

  3. 高级要素:作用域 + 正文 + 破坏性变更说明

  4. 工具支持:commitizen + commitlint + husky

  5. 团队协作:统一规范 + 自动化检查