Git Commit Prefix

25 年 4 月 1 日 星期二
704 字
4 分钟

在 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:,如:
    text
    feat: 引入新 API
    BREAKING CHANGE: 旧 API 不再支持

注:规范强调,所有类型不区分大小写,但 BREAKING CHANGE 必须大写,BREAKING-CHANGE 也可接受

参考