标准化的 commit 信息,让项目历史清晰可追溯、便于自动化生成日志、快速定位问题、团队协作更高效
- 可读性强:快速了解每次提交的目的和修改内容
- 可维护性高:方便代码回滚、排查 bug、追溯历史
- 自动化支持:可自动生成
CHANGELOG发布日志 - 团队协作:统一团队提交风格,降低沟通成本
<type>(<scope>): <subject>
# 空一行
<body>
# 空一行
<footer>
- 必填:
type+subject - 可选:
scope、body、footer
用于说明本次提交的修改类别,只能使用以下类型:
| 类型 | 含义 | 使用场景 |
|---|---|---|
feat |
新功能 | 新增业务功能、模块、接口 |
fix |
修复 bug | 修复线上 / 测试环境 bug |
docs |
文档修改 | 仅修改 README、注释、文档 |
style |
代码格式 | 不影响代码逻辑的修改(空格、分号、格式化) |
refactor |
重构 | 既不是新增功能,也不是修复 bug 的代码改动 |
perf |
性能优化 | 提升性能、加载速度的修改 |
test |
测试相关 | 新增 / 修改单元测试、集成测试 |
build |
构建工具 | 影响构建系统或外部依赖的修改(webpack、npm) |
ci |
持续集成 | CI 配置文件和脚本修改(GitHub Actions、Jenkins) |
chore |
其他修改 | 不修改 src/test 的其他操作(依赖更新、构建脚本) |
revert |
回滚提交 | 撤销之前的 commit |
用于说明本次修改影响的范围,让提交更精准:
- 示例:
(login)、(user)、(router)、(api)、(组件名) - 无特定范围可写
*或省略
- 简洁描述本次修改的核心内容(不超过 50 字符)
- 规则:
- 使用动词开头,首字母小写
- 结尾不加句号
- 语义清晰,一目了然
- 详细说明修改动机、实现思路、注意事项
- 每行不超过 72 字符,可分多行书写
- 破坏性变更:以
BREAKING CHANGE:开头,说明不兼容修改 - 关闭 Issue:
Closes #123, #456自动关联并关闭 GitHub/GitLab Issues
git commit -m "feat: 添加用户登录功能"
git commit -m "fix(login): 修复登录页验证码过期问题"
git commit -m "feat(user): 新增用户信息编辑功能
- 支持修改昵称、头像、手机号
- 增加表单校验逻辑
- 适配移动端样式
Closes #789"
git commit -m "revert: 回滚登录页功能提交"
git commit -m "perf(api): 重构用户数据接口
BREAKING CHANGE: 用户信息返回字段结构调整,前端需适配更新"
git commit -m "修改了一些东西"
git commit -m "修复bug"
git commit -m "更新代码"
git commit -m "aaa"
git commit -m "feat添加首页" # 缺少冒号空格
| 不良提交 | 规范提交 |
|---|---|
| 改了登录页 | fix (login): 修复登录按钮点击无响应问题 |
| 新增首页 | feat (home): 新增首页 banner 轮播图 |
| 格式化代码 | style: 全局代码格式化修复缩进 |
| 更新依赖 | chore: 升级 axios 到 1.7.2 版本 |
# 安装提交规范校验工具
npm install -g commitizen cz-conventional-changelog
在项目 package.json 添加配置:
{
"config": {
"commitizen": {
"path": "cz-conventional-changelog"
}
}
}
git add .
git cz # 交互式生成规范commit
类型(范围): 简短描述
# 新功能
git commit -m "feat: 新增xxx功能"
# 修复bug
git commit -m "fix: 修复xxx问题"
# 文档修改
git commit -m "docs: 更新README说明"
# 代码格式化
git commit -m "style: 格式化代码格式"
# 代码重构
git commit -m "refactor: 重构xxx逻辑"
# 依赖/构建修改
git commit -m "chore: 更新项目依赖包"
- 核心格式:
<type>: <subject>,简单易记 - 核心原则:清晰、简洁、统一,不写无意义提交
- 团队协作:强制使用规范,提升项目可维护性
- 工具加持:配合
git cz交互式提交,零学习成本