git commit 标签规范

2025-11-03  本文已影响0人  K891V

使用 git commit -m "<message>" 时,为了快速区分提交内容,使用如下规范。

统一格式为 标签: 描述内容 (注意冒号为英文字符,并且后有空格)。

例如:git commit -m "docs: 补充接口文档的参数说明"

标签 含义 / 使用场景 示例
feat 新增功能(面向用户的新能力) feat: 新增购物车批量结算功能
fix 修复 bug(解决代码运行时的错误) fix: 修复手机号格式验证失败的问题
docs 文档更新(仅修改注释、README 等) docs: 补充接口文档的参数说明
style 代码风格调整(不影响功能,如格式美化) style: 统一调整缩进为4个空格
refactor 代码重构(既不是新增功能也不是修 bug) refactor: 拆分用户服务类为多个模块
perf 性能优化(提升代码运行效率) perf: 优化商品列表查询的SQL语句
test 测试相关(新增 / 修改测试用例) test: 补充登录功能的单元测试
build 构建 / 部署相关(依赖、配置修改) build: 升级webpack版本到5.x
chore 其他杂项(不涉及代码逻辑的小改动) chore: 清理项目中无用的临时文件

自用极简

标签 含义 / 使用场景 示例
feat 新增功能(面向用户的新能力) feat: 新增购物车批量结算功能
fix 修复 bug(解决代码运行时的错误) fix: 修复手机号格式验证失败的问题
refactor 代码修改(既不是新增功能也不是修 bug) refactor: 拆分用户服务类为多个模块
docs 文档更新(仅修改注释、README 等) docs: 补充接口文档的参数说明

补充说明:

  1. 描述内容尽量简洁(建议不超过 50 字),清晰说明 “做了什么”,避免模糊表述(如 “修改了代码”“优化了一下”)。

  2. 一次提交尽量只对应一个标签(如同时改了功能和文档,建议拆成两次提交)。

  3. 规范的核心是 “见名知意”,帮助团队快速理解提交目的,无需过度纠结标签分类,优先保证一致性。

利用 hooks 校验 commit 的格式

可以通过 Git 钩子(Hook) 实现对 commit 信息的强制校验,确保提交内容必须包含指定标签(如 feat:、fix: 等)。核心思路是利用 Git 的 commit-msg 钩子,在提交信息写入前执行脚本检查,若不符合规范则阻止提交。

文件路径:
[项目目录]/.git/hooks/commit-msg
注意:在hooks目录下有commit-msg.sample文件,可以复制一份文件,直接删除.sample。并且文件无后缀名。

#!/bin/sh

# 定义允许的标签(与之前的规范对应)
ALLOWED_TYPES="feat|fix|docs|style|refactor|perf|test|build|chore"

# 获取提交信息文件(Git 会将提交信息暂存到这个文件中)
COMMIT_MSG_FILE=$1
COMMIT_MSG=$(cat "$COMMIT_MSG_FILE")

# 正则匹配:检查提交信息是否以 "标签: " 开头(标签必须是允许的类型,冒号后必须有空格)
if ! echo "$COMMIT_MSG" | grep -qE "^($ALLOWED_TYPES):\s"; then
  echo "❌ 提交信息不符合规范!必须以以下标签开头:"
  echo "   feat:   新增功能"
  echo "   fix:    修复 bug"
  echo "   docs:   文档更新"
  echo "   style:  代码风格调整"
  echo "   refactor: 代码重构"
  echo "   perf:   性能优化"
  echo "   test:   测试相关"
  echo "   build:  构建/部署相关"
  echo "   chore:  其他杂项"
  echo "   格式示例:feat: 新增购物车功能"
  exit 1  # 非 0 状态会阻止提交
fi

实现效果:


image.png
上一篇 下一篇

猜你喜欢

热点阅读