commit提交规范

经验

Posted by XX on May 20, 2023

什么是约定式提交?

约定式提交(Conventional Commits)是一种用于代码版本控制的规范,旨在通过明确和标准化提交信息来提高代码协作质量和效率。其基本原则是通过规定提交信息的结构和语义来提高代码版本控制的可读性、可维护性和自动化程度。 约定式提交规范通常要求提交信息包括一个描述性的”类型”、一个可选的”作用域”、一个用于简洁说明的”主题”,以及可选的”正文”和”尾部”等组成部分。这些组成部分的格式和语义都是根据规范要求进行约定的,比如使用”feat”来表示新功能、”fix”表示修复错误、”docs”表示文档变更等。 通过遵循约定式提交规范,开发人员可以更容易地理解和管理代码的变更历史,同时也为自动化工具提供了更多可靠的信息,例如自动生成版本号、发布日志和代码库更新等操作。 提交说明的结构如下所示:

<类型>[可选 范围]: <描述>

[可选 正文]

[可选 脚注]

type 类型概览

| 值 | 描述 | | — | — | | feat | 新增一个功能 | | fix | 修复一个Bug | | docs | 文档变更 | | style | 代码格式(不影响功能,例如空格、分号等格式修正) | | refactor | 代码重构 | | perf | 改善性能 | | test | 测试 | | build | 变更项目构建或外部依赖(例如scopes: webpack、gulp、npm等) | | ci | 更改持续集成软件的配置文件和package中的scripts命令,例如scopes: Travis, Circle等 | | chore | 变更构建流程或辅助工具 | | revert | 代码回退 |

如何遵守约定式提交?

Commitlint=> 对自动生成 commit 信息的校验

  1. 安装 @commitlint/config-conventional @commitlint/cli ```bash

    使用npm安装:

    npm install –save-dev @commitlint/config-conventional @commitlint/cli

使用pnpm安装:

pnpm install –save-dev @commitlint/config-conventional @commitlint/cli


2. 生成commitlint配置文件
```bash
# 执行此命令生成配置文件()
echo "module.exports = { extends: ['@commitlint/config-conventional'] };" > commitlint.config.cjs
  1. 安装husky ```bash

    npm安装

    npm install husky –save-dev

pnpm安装

pnpm install husky –save-dev


4. 启用 Git 钩子, husky初始化
```bash
# npm初始化
npx husky install

# pnpm初始化
pnpm dlx husky install
  1. 执行npm install命令后需要自动启用 Git 挂钩,请编辑package.json ```bash

    npm编辑命令

    npm pkg set scripts.prepare=”husky install”

pnpm编辑命令

pnpm pkg set scripts.prepare=”husky install”


6. 添加commitlint钩子
```bash
# npm执行命令
npx husky add .husky/commit-msg  'npx --no -- commitlint --edit ${1}'

# pnpm执行命令
pnpm dlx husky add .husky/commit-msg  'pnpm commitlint --edit $1'

至此项目关于commit校验的配置全部完成可以执行git提交命令进行测试

测试挂钩

您可以通过简单地提交来测试挂钩。如果一切正常,您应该会看到类似这样的内容。

git commit -m "foo: this will fail"
husky > commit-msg (node v10.1.0)
No staged files match any of provided globs.
⧗   input: foo: this will fail
✖   type must be one of [build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test] [type-enum]

✖   found 1 problems, 0 warnings
ⓘ   Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint

husky > commit-msg hook failed (add --no-verify to bypass)

因为如果您的提交没有问题,v8.0.0将不会输出任何内容。

Commitizen=>自动生成提交说明的工具 (非必需工具, 仅做简单介绍)

安装

pnpm install -g commitizen

全局安装commitizen使用默认配置即可

使用命令git cz 即可按格式生成commit信息