

[来源网站](https://www.conventionalcommits.org/zh-hant/v1.0.0/)

## 提交说明

### 基础结构

```
<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

# 译文

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

[可选 正文]

[可选 脚注]
```

### 类型（type）

- feat: 表示在代码库中新增了一个功能；
- fix: 表示在代码库中修复了一个 bug；

- build: 用于修改项目构建系统或外部依赖，例如升级依赖版本等；
- chore: 用于其他不修改`src`或`test`文件的杂项任务，例如更新`.gitignore`、修改编辑器配置等；
- ci: 用于修改持续集成/持续部署的配置与脚本，例如`GitHub Actions`、`Jenkins`、`Travis` 等工作流；
- docs: 用于修改文档，例如修改`README`文件、API文档等；
- style: 用于修改代码格式（不影响代码逻辑），例如调整缩进、空格、分号、引号风格等；
- refactor: 用于重构代码，例如修改代码结构、变量名、函数名等但不修改功能逻辑；
- improvement: 用于对现有实现进行改进，例如优化算法、增强健壮性等（不涉及新功能或 bug 修复）；
- revert: 用于回退之前的提交，描述应使用被回退提交的标题，并在脚注中用 `Refs:` 引用被回退的 commit SHA；
- perf: 用于优化性能，例如提升代码的性能、减少内存占用等；
- wip: 用于保存尚未完成的工作进度（Work In Progress）；
- test: 用于修改测试用例，例如添加、删除、修改代码的测试用例等；

> 破坏性变更**必须**在提交信息中标记出来，有两种方式：
>
> 1.在 `<类型>[可选 范围]` 后、冒号前添加 `!`，例如：`feat!: ...` 或 `refactor(api)!: ...`
>
> 2.*在脚注中添加* `BREAKING CHANGE: <描述>`
>
> 这两种方式可以同时使用，也可以只用其一。

### 范围（Scope）

范围用于标识本次修改影响的模块或组件，例如：

- feat(auth): ...   （auth 模块）

- fix(parser): ...  （parser 模块）

- build(deps): ...  （依赖管理）

范围名称建议使用小写英文，多个单词用 `-` 连接，例如 `user-profile`。

### 描述（description）

描述用于简要概括本次变更的内容，要求：

- 使用祈使语气、现在时态（例如用 "add" 而非 "added" 或 "adds"）；

- 小写开头，末尾不加句号；

- 长度建议控制在50个字符以内（中文约 25 个字）;

### 正文（Body）

正文是可选的，用于对本次变更进行更详细的说明，包括：

- 变更的动机（为什么这样做）

- 与之前行为的对比

- 实现方案的简要说明

正文与描述之间**必须**空一行，正文内部段落之间也可以空行分隔。

### 脚注（Footer）

脚注用于记录元信息，常见用法：

- `BREAKING CHANGE: <描述>` — 标记破坏性变更;

- `Closes #123` 或 `Fixes #456` — 关联 Issue/PR;

- `Refs: abc123` — 引用相关提交;

- `Reviewed-by: <name>` — 标记审查者;

- `Co-authored-by: <name> <email>` — 标记共同作者;

## 示例

### 基础功能提交
feat(auth): add JWT token refresh mechanism

### Bug 修复（含关联 issue）
fix(parser): handle empty string input edge case

Closes #123

### 破坏性变更（使用 ! 前缀）
feat(api)!: change user endpoint response format

BREAKING CHANGE: the `GET /api/users` endpoint now returns
a paginated response instead of a flat array.

### 回退提交
revert: remove experimental cache layer

Refs: a1b2c3d
