Git Commit 提交规范:让每一次提交都清晰可读

为什么要规范提交信息?

规范的 Git 提交信息能够带来以下好处:

  1. 提高代码可读性 - 让团队成员快速理解每次提交的意图
  2. 自动生成变更日志 - 便于追踪版本更新内容
  3. 自动化版本管理 - 支持语义化版本控制
  4. 方便问题定位 - 快速回溯历史记录,定位引入问题的提交
  5. 提升协作效率 - 统一团队沟通语言

提交信息格式规范

基本格式

xml 复制代码
<type>(<scope>): <subject>

<body>

<footer>

各部分说明

Header(必须)

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

  • type:提交类型,必须为以下之一:

    • feat- 新功能
    • fix- 修复 bug
    • docs- 文档更新
    • style- 代码格式调整
    • refactor- 代码重构
    • perf- 性能优化
    • test- 测试相关
    • chore- 构建过程或辅助工具变动
    • build- 构建系统修改
    • ci- CI 配置修改
    • revert- 回退提交
  • scope(可选):影响范围,如模块、组件等

  • subject:简短描述,不超过 50 字符

Body(可选)

详细说明修改内容,包括:

  • 修改动机
  • 实现细节
  • 注意事项
  • 每行不超过 72 字符

Footer(可选)

  • 关联的 Issue:Closes #123, #245
  • 破坏性变更说明:BREAKING CHANGE: 旧接口已废弃
  • 关闭 Issue:Fixes #456

提交类型详解

类型 说明 示例
feat 新增功能 feat(user): 添加用户注册功能
fix 修复 Bug fix(login): 修复登录超时问题
docs 文档更新 docs: 更新 README 安装说明
style 代码格式 style: 统一缩进为 2 空格
refactor 代码重构 refactor(auth): 优化认证逻辑
perf 性能优化 perf(image): 优化图片加载性能
test 测试相关 test(api): 添加用户 API 测试
chore 构建工具 chore: 更新 webpack 配置
build 构建系统 build: 升级依赖包版本
ci CI 配置 ci: 添加 GitHub Actions 配置
revert 回滚提交 revert: 回滚到 v1.0.0

完整示例

示例 1:新功能提交

diff 复制代码
feat(auth): 添加 JWT 认证功能

- 实现 JWT token 生成
- 添加 token 验证中间件
- 配置 token 刷新机制

Closes #123

示例 2:Bug 修复

markdown 复制代码
fix(payment): 修复支付回调失败问题

修复微信支付回调时参数解析错误的问题:
1. 修正金额计算逻辑
2. 添加回调参数验证
3. 优化错误处理机制

Fixes #45, #46

示例 3:重构提交

diff 复制代码
refactor(user): 重构用户服务层

- 将业务逻辑从控制器移到服务层
- 抽象用户数据操作接口
- 优化数据库查询性能

BREAKING CHANGE: 用户服务接口已重构,需更新调用方式

最佳实践

1. 保持提交原子性

每个提交应专注于单一功能或修复,避免混合多个不相关的修改。

✅ 正确:

scss 复制代码
feat(api): 新增用户搜索接口
fix(auth): 修复登录超时

❌ 错误:

复制代码
更新代码和修复 bug

2. 使用祈使语气

描述使用祈使语气,如"添加"、"修复"、"更新"。

✅ 正确:fix: 修复登录错误

❌ 错误:fix: 修复了登录错误

3. 长度控制

  • Header:不超过 50 字符
  • Body:每行不超过 72 字符

4. 关联 Issue

在 Footer 中明确关联的 Issue 编号,便于追踪。

less 复制代码
Closes #123
Fixes #45, #46
Related to #78

自动化工具配置

Commitizen(交互式提交工具)

安装配置:

css 复制代码
npm install -g commitizen
npm install --save-dev cz-conventional-changelog

package.json中添加:

json 复制代码
{
  "config": {
    "commitizen": {
      "path": "./node_modules/cz-conventional-changelog"
    }
  },
  "scripts": {
    "commit": "git-cz"
  }
}

使用:npm run commit

Commitlint(提交信息校验)

安装:

scss 复制代码
npm install --save-dev @commitlint/cli @commitlint/config-conventional

配置文件 .commitlintrc.js

java 复制代码
module.exports = {
  extends: ['@commitlint/config-conventional'],
  rules: {
    'type-enum': [
      2,
      'always',
      ['feat', 'fix', 'docs', 'style', 'refactor', 'test', 'chore', 'perf', 'ci', 'build', 'revert']
    ],
    'subject-case': [0]
  }
};

Husky(Git 钩子管理)

安装配置:

sql 复制代码
npm install husky --save-dev
npx husky install

# 添加 commit-msg 钩子
npx husky add .husky/commit-msg 'npx --no -- commitlint --edit $1'

常见问题处理

1. 修改最近提交

sql 复制代码
git commit --amend -m "feat: 更新提交信息"

2. 修改多个提交

css 复制代码
git rebase -i HEAD~3

3. 紧急情况跳过校验

perl 复制代码
git commit --no-verify -m "紧急修复"

实用命令

perl 复制代码
# 查看提交历史
git log --oneline --graph

# 查看特定文件历史
git log --follow -p filename

# 查看某次提交详情
git show <commit-hash>

# 搜索提交信息
git log --grep="修复登录"

总结

良好的提交规范是团队协作的基石。通过规范的提交信息,配合自动化工具,可以:

  1. 提升代码审查效率
  2. 自动生成高质量变更日志
  3. 便于问题追踪和调试
  4. 提高项目可维护性

建议团队在项目初期就建立并遵守提交规范,这将为项目的长期健康发展打下坚实基础。

相关推荐
德育处主任2 小时前
在小程序做海报的话,Painter就很给力
前端·微信小程序·canvas
骑斑马的李司凌2 小时前
调试时卡半天?原来127.0.0.1和localhost的区别这么大!
前端
哈哈O哈哈哈2 小时前
Electron + Vue 3 + Node.js 的跨平台桌面应用示例项目
前端
ycbing2 小时前
设计并实现一个 MCP Server
前端
千寻girling2 小时前
面试官: “ 说一下怎么做到前端图片尺寸的响应式适配 ”
前端·javascript·面试
少莫千华2 小时前
【Web API】RESTful API接口规范
前端·后端·json·api·restful·rest
掘金酱2 小时前
2025年度稀土掘金影响力榜单发布!
前端·人工智能·后端
GISer_Jing3 小时前
AI编程革命:Trae如何重塑前端开发
前端·前端框架·aigc·ai编程
豌豆学姐3 小时前
Sora2 视频生成 API 如何对接?附可直接使用的开源前端项目
前端·人工智能·开源·aigc·php