git提交限制规范

创建全局 Git Hook 配置文件

1. 创建安装脚本

创建一个文件 setup-global-git-hook.sh:

bash 复制代码
#!/bin/bash

# 创建全局 hooks 目录
GLOBAL_HOOKS_DIR="$HOME/.git-hooks"
mkdir -p "$GLOBAL_HOOKS_DIR"

# 创建 commit-msg hook 文件
cat > "$GLOBAL_HOOKS_DIR/commit-msg" << 'EOF'
#!/bin/bash

# 提交信息文件路径
commit_msg_file="$1"

# 读取提交信息
commit_msg=$(cat "$commit_msg_file")

# 定义允许的关键字
allowed_types="add|mod|fix|del|doc"

# 正则表达式:必须以 [关键字] 开头,后面至少跟一个空格和内容
pattern="^\[($allowed_types)\]\s+.+$"

# 检查提交信息是否符合规范
if ! echo "$commit_msg" | grep -qE "$pattern"; then
    echo ""
    echo "❌ 提交信息格式不符合规范!"
    echo ""
    echo "📝 格式要求:必须以以下关键字开头:"
    echo "  [add] 新增功能"
    echo "  [mod] 修改功能"
    echo "  [fix] 修复问题"
    echo "  [del] 删除功能"
    echo "  [doc] 文档(sql、接口文档、readme等)"
    echo ""
    echo "✅ 正确示例:"
    echo "  [add] 新增用户登录功能"
    echo "  [mod] 优化订单查询性能"
    echo "  [fix] 修复登录超时问题"
    echo "  [del] 移除过时的API接口"
    echo "  [doc] 更新接口文档"
    echo "  [doc] 添加数据库初始化sql"
    echo ""
    echo "❌ 错误示例:"
    echo "  add 新增功能          (缺少方括号)"
    echo "  [add]新增功能         (缺少空格)"
    echo "  [update] 更新代码     (不允许的关键字)"
    echo ""
    exit 1
fi

exit 0
EOF

# 添加执行权限
chmod +x "$GLOBAL_HOOKS_DIR/commit-msg"

# 配置 Git 使用全局 hooks 目录
git config --global core.hooksPath "$GLOBAL_HOOKS_DIR"

echo ""
echo "✅ 全局 Git Hook 配置完成!"
echo "📁 Hook 目录:$GLOBAL_HOOKS_DIR"
echo ""
echo "现在所有 Git 仓库的提交信息都必须符合规范:"
echo "  [add] 新增功能"
echo "  [mod] 修改功能"
echo "  [fix] 修复问题"
echo "  [del] 删除功能"
echo "  [doc] 文档(sql、接口文档、readme等)"
echo ""

2. 运行脚本

bash 复制代码
# 给脚本添加执行权限
chmod +x setup-global-git-hook.sh

# 运行脚本
./setup-global-git-hook.sh

或者直接手动配置

如果你想手动配置,执行以下命令:

bash 复制代码
# 1. 创建全局 hooks 目录
mkdir -p ~/.git-hooks

# 2. 创建 commit-msg 文件
cat > ~/.git-hooks/commit-msg << 'EOF'
#!/bin/bash

commit_msg_file="$1"
commit_msg=$(cat "$commit_msg_file")

pattern="^\[(add|mod|fix|del|doc)\]\s+.+$"

if ! echo "$commit_msg" | grep -qE "$pattern"; then
    echo ""
    echo "❌ 提交信息格式不符合规范!"
    echo ""
    echo "格式要求:必须以 [add]、[mod]、[fix]、[del]、[doc] 开头"
    echo "示例:"
    echo "  [add] 新增用户登录功能"
    echo "  [mod] 优化订单查询性能"
    echo "  [fix] 修复登录超时问题"
    echo "  [del] 移除过时的API接口"
    echo "  [doc] 更新接口文档"
    echo ""
    exit 1
fi

exit 0
EOF

# 3. 添加执行权限
chmod +x ~/.git-hooks/commit-msg

# 4. 配置 Git 使用全局 hooks
git config --global core.hooksPath ~/.git-hooks

echo "✅ 全局配置完成!"

验证配置

配置完成后,可以测试一下:

bash 复制代码
# ✅ 正确的提交(会成功)
git commit -m "[add] 新增用户登录功能"

# ✅ 正确的提交
git commit -m "[doc] 更新README文档"

# ✅ 正确的提交
git commit -m "[fix] 修复登录bug"

# ❌ 错误的提交(会被拒绝)
git commit -m "add 新增功能"           # 缺少方括号
git commit -m "[add]新增功能"          # 缺少空格
git commit -m "[update] 更新代码"      # 不允许的关键字

注意事项

  1. 全局配置生效范围:这个配置会对你电脑上所有 Git 仓库生效
  2. 绕过检查 :如果需要紧急跳过检查,可以使用 git commit --no-verify -m "message",但建议只在特殊情况下使用
  3. 团队协作:如果团队成员也需要此规范,可以把这个脚本分享给他们执行

这样配置后,任何不符合 [add]、[mod]、[fix]、[del]、[doc] 开头的提交都会被拒绝。

相关推荐
CNSSIRD数据库2 分钟前
中国省地县乡四级行政建制及区划代码-2025年版
大数据·数据库·数据分析·论文笔记
我的愿望是成为富婆9 分钟前
2027校招准备:普通本科数据相关专业,如何把考证、SQL与项目能力衔接起来?
大数据
重生之高冷汉堡包12 分钟前
JavaScript 网络爬虫教程(2026)
大数据·网络·爬虫·安全
Data analyse45615 分钟前
用户路径SQL按会话起止时间聚合的方法
大数据·服务器·前端·数据库·人工智能·sql·数据分析
程序员清风17 分钟前
文本字段清洗:字符串、分类值与格式标准化
大数据·人工智能·分类
智慧物业老杨18 分钟前
物业费催收难?数智化系统如何用技术重构“服务-收费“闭环
大数据·人工智能
Raas10020 分钟前
AI网关怎么选?MAI Gateway(魔芋企业级AI网关)入选2026年企业级AI网关推荐清单
大数据·网络·人工智能·gateway·mai gateway
恒拓高科WorkPlus25 分钟前
企业IM、OA套件与数字协同平台怎么选?现有系统集成与采购成本对比
大数据·安全
数据皮皮侠31 分钟前
中国产品级二氧化碳排放数据集
大数据·人工智能·搜索引擎·智慧城市·制造
Tairitsu_H31 分钟前
[版本控制器Git] Git 远程仓库 | 多人协作 | 企业级 Git Flow 开发模型
git·版本控制器·远程仓库