视频加载失败

Git 提交规范与 Conventional Commits 实践

430 字
2 分钟
Git 提交规范与 Conventional Commits 实践

为什么需要提交规范#

团队提交历史常常变成一团乱麻:fix bug、update、改了一下。这类信息对半年后的你毫无价值。好的提交信息应当回答两个问题:

  1. 改了什么(what)
  2. 为什么改(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 钩子:

Terminal window
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/
作者
CyreneStar
发布于
2026-08-09
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
CyreneStar
全栈开发者 / DevOps 实践者。路漫漫其修远兮,吾将上下而求索。
公告
欢迎来到 CyreneStar 的博客,记录技术探索与工程实践。
分类
标签
站点统计
文章
4
分类
4
标签
14
总字数
1,402
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录