在 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
也可接受