在 Git 中,一个好的 commit message 应该清晰、简洁,并能准确描述本次提交的内容。良好的 commit 规范有助于团队协作、代码审查(Code Review)以及后续的版本维护。以下是 Git Commit Message 的最佳实践:
1. Commit Message 结构
推荐采用 Conventional Commits 规范,格式如下:
1 | <type>[optional scope]: <description> |
示例
1 | feat(auth): add user login API |
2. Commit Message 各部分说明
| 部分 | 说明 | 示例 |
|———|———|———|
| type | 提交的类型,通常使用以下几种:
- feat
(新功能)
- fix
(Bug 修复)
- docs
(文档更新)
- style
(代码格式化,不影响逻辑)
- refactor
(代码重构,既不是新功能也不是 Bug 修复)
- test
(测试相关)
- chore
(构建过程或辅助工具的变动)
- perf
(性能优化)
- revert
(回滚之前的提交) | feat: add user login
|
| scope (可选) | 影响的范围(可选),如模块名、文件名等 | (auth)
(api)
|
| description | 简短描述本次提交的内容(现在时态,首字母小写) | add user login API
|
| body (可选) | 详细说明变更内容(可多行) | - 改进点1<br>- 改进点2
|
| footer (可选) | 重大变更、Breaking Changes 或关联的 Issue | BREAKING CHANGE: ...
或 Closes #123
|
3. 常见 Commit Type 示例
| Type | 说明 | 示例 |
|———|———|———|
| feat
| 新增功能 | feat: add dark mode
|
| fix
| Bug 修复 | fix: correct login validation
|
| docs
| 文档更新 | docs: update README.md
|
| style
| 代码格式化(不影响逻辑) | style: format code with Prettier
|
| refactor
| 代码重构(非新功能/非 Bug 修复) | refactor: optimize database queries
|
| test
| 测试相关 | test: add unit tests for utils
|
| chore
| 构建/工具变更 | chore: update dependencies
|
| perf
| 性能优化 | perf: improve rendering speed
|
| revert
| 回滚提交 | revert: revert "feat: add user login"
|
4. 不好的 Commit Message 示例
❌ 模糊不清
1 | update code |
✅ 改进后
1 | fix(auth): correct login validation error |
❌ 缺少类型
1 | add new feature |
✅ 改进后
1 | feat: implement user profile page |
❌ 过于冗长
1 | this commit adds a new feature that allows users to log in and also fixes some minor bugs in the process |
✅ 改进后
1 | feat: add user login API |
5. 如何规范 Commit Message?
(1) 使用 Git Hooks(推荐)
• Husky + commitlint(强制检查 Commit 格式)
1 | npm install husky --save-dev |
这样提交时如果不符合规范会被阻止。
(2) 使用 Commitizen(交互式提交)
1 | npm install -g commitizen |
然后使用
git cz
代替 git commit
,它会引导你填写规范的 Commit Message。
6. 总结
✅ 好的 Commit Message 应该:
• 简洁明了,准确描述变更内容
• 遵循 <type>: <description>
格式
• 关键变更可加 BREAKING CHANGE
或关联 Issue
• 使用工具(Husky + commitlint)强制规范
这样可以让团队协作更高效,代码历史更清晰! 🚀