当前位置: 首页 > news >正文

git做commit信息时的校验

亲测可用!不行你来打我!!!!!

1. 文件基本信息

属性说明
文件名commit-msg必须无扩展名,如 .sh 或 .txt 会导致失效)
位置仓库的 .git/hooks/ 目录下(或全局模板目录的 hooks/ 下)
权限必须可执行(chmod +x .git/hooks/commit-msg
所有者建议与 Git 用户一致(通常不需要特别修改)

2. 在开发者的本地仓库中添加钩子

 单个仓库配置

#!/bin/bash# 允许的提交类型
COMMIT_TYPES=("feat" "fix" "docs" "style" "refactor" "test" "chore" "revert")# 读取提交信息
COMMIT_MSG=$(cat "$1")# 跳过空信息和合并提交
if [[ -z "$COMMIT_MSG" || "$COMMIT_MSG" =~ ^Merge ]]; thenexit 0
fi# 校验格式:类型(可选作用域): 描述
if ! [[ "$COMMIT_MSG" =~ ^($(IFS=\|; echo "${COMMIT_TYPES[*]}"))(:|\(.*\):).* ]]; thenecho -e "\n\033[31mERROR: Invalid commit message format!\033[0m" >&2echo -e "Allowed types: \033[34m${COMMIT_TYPES[*]}\033[0m" >&2echo -e "Example: \033[32mfeat: add new feature\033[0m" >&2exit 1
fiexit 0

全局仓库配置(所有仓库生效)

# 1. 创建全局模板目录
git config --global init.templatedir ~/.git-templates
mkdir -p ~/.git-templates/hooks# 2. 创建全局 commit-msg 钩子
cat > ~/.git-templates/hooks/commit-msg <<'EOF'
#!/bin/bash
# 这里粘贴上述脚本内容
EOF
chmod +x ~/.git-templates/hooks/commit-msg# 3. 应用到现有仓库
find ~ -type d -name ".git" 2>/dev/null | while read gitdir; docp ~/.git-templates/hooks/commit-msg "$gitdir/hooks/"
done

3. 如何生效?

# 进入仓库的 .git/hooks 目录
cd /path/to/repo/.git/hooks# 创建 commit-msg 文件(内容如上)
nano commit-msg  # 粘贴脚本内容# 赋予执行权限
chmod +x commit-msg

4. 测试效果

# 尝试提交不符合规范的信息
git commit -m "bad message" --allow-empty
# 预期输出错误并阻止提交# 提交符合规范的信息
git commit -m "feat: add new feature" --allow-empty
# 预期提交成功

 

相关文章:

  • hz2新建Keyword页面
  • Spring 必会之微服务篇(1)
  • python实现点餐系统
  • gitlab相关面试题及答案
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.3.31)
  • 用Python监控金价并实现自动提醒!附完整源码
  • 软件测试——用例篇(2)
  • OpenHarmony 以太网卡热插拔事件接口无效
  • 【RLHF】 Reward Model 和 Critic Model 在 RLHF 中的作用
  • 云原生架构下的微服务通信机制演进与实践
  • 31【干货】Arcgis属性表常用查询表达式实战大全
  • 1 bit AI 框架:Part 1.1,CPU 上的快速无损 BitNet b1.58 推理
  • CAN转ModbusTCP网关:破解电池生产线设备协议壁垒,实现全链路智能互联
  • excel单元格如果是日期格式,在C#读取的时候会变成45807,怎么处理
  • c++:库(Library)
  • 系统的从零开始学习电子的相关知识,该如何规划?你是工作了18年的电子工程师,请给出你的建议
  • 【Linux】环境变量(图文)
  • learning ray之ray强化学习/超参调优和数据处理
  • ‌FunASR‌阿里开源的语音识别工具
  • 使用 ECharts GL 实现交互式 3D 饼图:技术解析与实践
  • “降息潮”延续!存款利率全面迈向“1时代”
  • 明明睡够了,怎么还有黑眼圈?可能是身体在求救
  • 中华人民共和国和俄罗斯联邦关于全球战略稳定的联合声明
  • 人民日报钟声:中方维护自身发展利益的决心不会改变
  • 售卖自制外挂交易额超百万元,一男子因提供入侵计算机系统程序被抓
  • 男子煎服15克山豆根中毒送医,医生:不能盲目相信偏方