约定式提交 (Conventional Commits) 教程
项目介绍
约定式提交是一种轻量级的提交消息约定,旨在提升版本控制历史的可读性和一致性。通过一套简单的规则,它帮助开发者创建结构化的提交信息,便于后续的代码审查、自动化发布流程及长期的项目维护。该规范源自 Angular 项目,现已成为广泛采纳的标准,其官方仓库位于 https://github.com/conventional-commits/conventionalcommits.org.git。
项目快速启动
要快速启动并应用约定式提交,首先需理解核心提交类型:
feat:
新增功能fix:
修复缺陷docs:
文档更新style:
代码风格更改,不影响逻辑refactor:
重构代码test:
测试相关修改chore:
维护工作,不涉及源码变更ci:
持续集成配置更改
示例提交消息:
git commit -m "feat(login): 添加邮箱登录功能"
安装并配置 Commit Lint 可以帮助团队遵循此规范:
-
安装 Commit Lint:
npm install --save-dev @commitlint/cli @commitlint/config-conventional
-
配置 Commit Lint:
在项目根目录创建
.commitlintrc.js
文件:module.exports = { extends: ['@commitlint/config-conventional'], };
-
运行 Commit Lint 前置钩子:
在
package.json
添加 husky 钩子:"husky": { "hooks": { "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" } },
并安装 husky:
npx husky install
应用案例和最佳实践
在多人协作的项目中,约定式提交提供了一种标准语言,使得变更意图一目了然。例如,在进行版本发布时,可以快速筛选出影响版本号变动的feat:
和fix:
提交,决定semver中的次版本或补丁版本升级。
- 明确区分功能与修复:保证每个特性或错误修复都是单独的提交,便于回滚。
- 利用 CI/CD:与CI系统结合,自动构建、测试特定类型的提交,如
ci:
改变后的部署验证。 - 持续文档更新:确保每次重要更改都有对应的文档更新,提升项目可维护性。
典型生态项目
约定式提交已成为众多开发工具和流程的一部分,其中包括但不限于:
- GitLab Merge Requests 支持展示按规范编写的提交消息,便于审查。
- GitHub Actions 中可配置触发条件,依据提交类型自动执行任务。
- Semantic Release 自动化发布工具,依赖于提交消息来确定版本号的变化。
通过将这些生态系统中的工具与约定式提交相结合,项目管理变得更加高效且标准化。
综上所述,采用约定式提交不仅能提高代码库的健康度,还能加强团队之间的沟通效率,是现代软件开发流程中不可或缺的一部分。