OneMore Blog
RSS 订阅分享到 X邮件分享

已发布文章 / 2026年4月24日

Git 提交规范:写好每一次 commit

从为什么要规范 commit 开始,介绍 Conventional Commits 的基本格式、常见 type、scope 用法、提交粒度和团队落地建议。

Git 提交规范:写好每一次 commit

Git 提交规范封面

Git 提交规范:写好每一次 commit

很多项目的 Git 历史看起来都差不多:

update
fix bug
改一下
临时提交

这些提交在当下可能能看懂,但过几天再回头看,基本就不知道当时到底改了什么。

所以我觉得,commit message 不只是给 Git 看的,更是给未来的自己和队友看的。

为什么要规范 commit?

规范 commit 最大的价值不是“显得专业”,而是降低沟通成本。

当你看到这样一条提交:

fix(login): 修复登录过期后未跳转的问题

你不用打开代码,也能大概知道这次修改的目的。

它至少解决了三个问题:

  • 方便回溯历史
  • 方便 Code Review
  • 方便团队协作

如果后续接入 changelog、自动发版之类的工具,规范的 commit message 也会更容易处理。

我推荐的格式

比较常见的写法是 Conventional Commits:

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

比如:

feat(auth): 新增邮箱验证码登录
fix(form): 修复表单校验失效问题
docs: 更新 README 使用说明
refactor(api): 重构请求封装逻辑

其中:

  • type 表示提交类型
  • scope 表示影响范围,可以不写
  • subject 表示这次提交做了什么

如果项目比较小,也可以先用简化版:

<type>: <subject>

比如:

feat: 新增文章搜索功能
fix: 修复移动端菜单无法关闭的问题

常用 type

日常开发里,用下面几个基本就够了:

type 含义
feat 新增功能
fix 修复问题
docs 文档修改
style 代码格式调整
refactor 代码重构
perf 性能优化
test 测试相关
build 构建相关
ci CI/CD 相关
chore 其他杂项

刚开始不需要追求太复杂,能把 featfixdocsrefactorchore 用清楚,就已经比大多数随手提交好很多。

不推荐的写法

下面这些提交信息尽量不要再用了:

update
fix
bug
修改
提交
111
final

它们的问题不是“不规范”,而是信息量太低。

一条好的 commit message 应该让别人看完之后知道:

这次提交到底改了什么?

比如:

fix: 修复搜索结果为空时页面报错
feat: 新增文章标签筛选功能
docs: 补充本地开发环境说明

这些就比简单的 update 清楚很多。

一次 commit 只做一件事

除了 message 格式,提交粒度也很重要。

推荐这样拆:

feat(login): 新增验证码登录功能
fix(login): 修复验证码倒计时异常问题
style(login): 调整登录页按钮间距

不要把新增功能、修 bug、改样式、重构代码全部塞进一个 commit。

这样做的好处是:

  • Review 更容易
  • 出问题时更容易回滚
  • 查看历史时更容易理解

我的建议

如果是个人项目,我建议先做到这三点:

  1. 不再写 updatefix bug改一下
  2. 使用 type: 描述 的格式
  3. 一次 commit 尽量只做一件事

如果是团队项目,可以再加上 scope,并配合 commitlint、husky 这类工具做自动校验。

总结

Git 提交规范不是为了让流程变复杂,而是为了让项目历史更清楚。

写好 commit message,其实是在帮未来的自己省时间。

从最简单的格式开始就够了:

feat: 新增功能
fix: 修复问题
docs: 更新文档
refactor: 重构代码
chore: 日常维护

别再写 update 了。