• 首页
  • 博客
  • 项目
  • 留言墙
  • AMA

动态更新

喜欢我的内容的话不妨订阅支持一下 🫶
加入其他 4 位订阅者,每月一封,随时可以取消订阅。

© 2025 AG.

首页博客项目留言墙AMA
总浏览量 3,012
最近访客来自 Columbus, US🇺🇸
  • 意义及现状
  • 为什么要使用约定式提交?
  • 为你的项目设置约定式提交
  • 会显示提交成功:
  • 结论
约定式提交指南
2022/12/09教程

约定式提交指南

Git 每次提交代码, 都要写 Commit message(提交说明)

31次点击4分钟阅读

意义及现状

约定式提交(conventional commits)是一种特定的提交形式, 它为软件开发人员提供了一个通用的系统, 来管理和描述他们每次的提交. 使得开发人员更容易追踪每次的更新. 这种类型的提交通常遵循严格且一致的格式,方便快速浏览查找,回溯之前的工作内容。

commit message 的结构如下:

commit 内的 type 元素是必须的, 用于表示当前提交的意图, 并且应该是以下类型之一:

  • feat - 新功能 feature
  • fix - 修复 bug
  • docs - 文档注释
  • style - 代码格式(不影响代码运行的变动)
  • refactor - 重构、优化(既不增加新功能,也不是修复bug)
  • perf - 性能优化
  • test - 增加测试
  • chore - 构建过程或辅助工具的变动
  • revert - 回退
  • build - 打包

commit 内的 scope是选填项, 表示 commit 的作用范围,如api, ui, database,也可以是目录名称.

commit 内的 description是必填项, 用于对 commit 进行简短的描述.

例子:

为什么要使用约定式提交?

  • 无论是在发布版本时、还是在每次提交 commit 时, 手动编写 CHANGELOG 总是令人心烦的. 自动化该流程能提高幸福指数.
  • 在不强调 commit 规范的前提下, 去强调 CHANGELOG 的准确性, 我认为是靠不住的. 在记录时、迭代编辑时、合并分支时都有可能丢失文档内的信息. 而基于 commit 生成 CHANGELOG 则大大降低了这个可能性, 毕竟 commit 可不能随随便便就搞丢.
  • 自动生成 CHANGELOG 应该作为 CI/CD 的一部分.

为你的项目设置约定式提交

我将使用 commitlint(面向约定式提交的自动化工具)来实现自动使用约定式提交 commit.

1️⃣. 安装 commitlint 以及依赖:

2️⃣. 添加 commitlint 配置文件到你的项目: 使用下面令创建具有基本配置的配置文件:

配置文件内应包含下面内容:

3️⃣. commitlint 需要使用 commit-msg hook, 官方使用的是 husky.

使用下面命令激活 hooks :

你会看到这样的提示:

并且在你项目的根目录你会看到你一新创建的 .husky的文件夹.

tip: 我强烈建议在 package.json 中添加一个 postinstall脚本, 用来在安装完依赖后自动安装 husky hooks.

4️⃣. 添加一个 commit-msg hook 到 lint commits:

完成后你可以在 .husky文件夹看到一个名为commit-msg的文件.

现在每当你提交时, commitlint 都会检查你的 commit message 并确保它遵循 conventional commit 提交格式.

创建一个提交进行测试:

测试提交会出现以下报错:

到此, commitlint 已检测到提交消息没有遵循 conventional commit 提交格式,并提供了有用的错误消息.

使用 conventional commit 再次提交:

会显示提交成功:

结论

一套组合拳下来, 正经的 commit 规范 + 自动生成 CHANGELOG 的机制就形成了.
此时再针对各个配置按需进行调整, 就能 run 起来了, Happy committing🍻.

相关文章

使用React Query实现无限滚动

2023/10/25教程705分钟阅读

在Next.js项目中使用Upstash限流

2023/08/10教程484分钟阅读

如何快速定位导致水平滚动的元素

2023/06/07教程411分钟阅读