Git 提交规范与 Conventional Commits 实践
430 字
2 分钟
Git 提交规范与 Conventional Commits 实践
为什么需要提交规范
团队提交历史常常变成一团乱麻:fix bug、update、改了一下。这类信息对半年后的你毫无价值。好的提交信息应当回答两个问题:
- 改了什么(what)
- 为什么改(why)
提交规范的价值在于:机器可解析、人类可读、能自动生成 CHANGELOG、能推导语义化版本号。
Conventional Commits 规范
格式如下:
<type>(<scope>): <subject>
<body>
<footer>type:提交类型(见下表)scope:可选,影响范围(模块/组件)subject:简短描述,祈使句、不加句号、不超过 50 字body/footer:可选,说明动机与破坏性变更
常用 type
| type | 含义 |
|---|---|
| feat | 新功能 |
| fix | 修复 bug |
| docs | 文档变更 |
| style | 格式(不影响逻辑) |
| refactor | 重构 |
| perf | 性能优化 |
| test | 测试 |
| chore | 构建/依赖等杂项 |
| revert | 回滚 |
示例
feat(auth): 支持 OAuth2 第三方登录
新增 Google / GitHub 登录入口,用户信息通过 JWT 下发。
BREAKING CHANGE: 旧的 session 鉴权接口已下线。带 BREAKING CHANGE: 的提交会被工具识别为破坏性变更,发布时升主版本号。
用 commitlint + husky 自动校验
光靠自觉不够,用工具在提交前拦下来。先在项目里加 commitlint.config.js:
module.exports = { extends: ['@commitlint/config-conventional'],}再用 husky 挂一个 commit-msg 钩子:
npx husky add .husky/commit-msg "npx --no-install commitlint --edit $1"此后不符合规范的提交会被直接拒绝,并提示正确格式。
从提交推导版本号
有了结构化提交,可以用 standard-version 或 semantic-release 自动:
fix→ 升 patch(1.0.0 → 1.0.1)feat→ 升 minor(1.0.0 → 1.1.0)BREAKING CHANGE→ 升 major(1.0.0 → 2.0.0)
同时自动生成 CHANGELOG,无需手工维护。
规范不是束缚,而是给未来的自己和协作者留的一份地图。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Git 提交规范与 Conventional Commits 实践
https://www.devng.cn/posts/git-conventional-commits/相关文章智能推荐
1
用 GitHub Actions 搭建轻量 CI/CD 流水线
DevOps从零配置 GitHub Actions,实现代码推送自动 lint、测试、构建与部署,覆盖 workflow 语法、缓存加速、密钥管理与多环境发布。
2
Redis 缓存设计:穿透、击穿、雪崩与实战
后端缓存三大经典问题(穿透/击穿/雪崩)的成因与解法,结合布隆过滤器、互斥锁、随机过期时间等策略,附伪代码与 Redis 最佳实践。
3
TypeScript 泛型与类型体操入门
前端从泛型基础到 Utility Types 与条件类型,循序渐进掌握 TypeScript 类型层面的抽象能力,写出更安全的代码。
随机文章随机推荐












