在 Git Commit 中,通常会使用一些特定的前缀来描述提交的目的或性质,这些前缀源于 Conventional Commits (规范化提交)。在大型的团队开发中,这些前缀有助于团队成员和工具(如自动化构建、版本发布工具等)理解代码变更的意图,几乎是不可或缺的
什么是 Git Commit 前缀?
Git commit 前缀是提交消息开头添加的标签,用于表示此次提交的更改类型。例如,feat: 添加用户认证 表示添加了一个新功能,而 fix: 修复登录表单问题 表示修复了一个错误。这些前缀有助于团队更好地组织和理解提交历史,便于生成变更日志和确定版本更新
常规提交规范(Conventional Commits)是一种流行的标准,建议使用特定前缀来分类更改。它与语义化版本(SemVer)兼容,方便自动生成变更日志和版本号
前缀的结构与类型
根据规范,提交消息的结构为 <type>[optional scope][optional !]: <description>[optional body][optional footer(s)],具体如下表:
| 元素 | 描述 |
|---|---|
| 类型(Type) | 必须,名词表示更改类型,如 feat(新功能)、fix(修复)、docs(文档) |
| 作用域(Scope) | 可选,括号内的名词表示影响的模块,如 feat(auth): 添加 OAuth 支持 |
| 重大更改标记(!) | 可选,置于类型或范围后,表示重大更改,如 feat!: 移除废弃 API |
| 描述(Description) | 必须,紧跟冒号和空格,简要总结更改,如 fix: 解决登录表单问题 |
| 消息体(Body) | 可选,空一行后提供更多上下文,自由格式,可分段落 |
| 脚注(Footer) | 可选,空一行后添加,遵循 Git trailer 格式,如 BREAKING CHANGE: 或 Refs: #123 |
常见的类型包括:
feat: 新功能,触发 MINOR 版本更新fix: 修复错误,触发 PATCH 版本更新docs: 文档更改,无版本更新影响style: 代码风格调整(如格式化),无版本更新影响refactor: 代码重构,无功能更改,无版本更新影响test: 添加或修改测试,无版本更新影响chore: 维护任务,如更新依赖,无版本更新影响build: 构建系统更改,无版本更新影响ci: 持续集成配置更改,无版本更新影响perf: 性能优化,无版本更新影响(除非包含重大更改)revert: 回滚某个之前的提交
重大更改必须明确标记:
- 方法一:在类型/范围后加
!,如feat!: 移除废弃 API - 方法二:在脚注添加
BREAKING CHANGE:,如:textfeat: 引入新 API BREAKING CHANGE: 旧 API 不再支持
注:规范强调,所有类型不区分大小写,但 BREAKING CHANGE 必须大写,BREAKING-CHANGE 也可接受