当前位置: 首页 > 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
# 预期提交成功

 

http://www.xdnf.cn/news/365491.html

相关文章:

  • C++ —— 可变参数
  • D720201 PCIE 转USB HUB
  • 值拷贝、浅拷贝和深拷贝
  • 利用混合磁共振成像 - 显微镜纤维束成像技术描绘结构连接组|文献速递-深度学习医疗AI最新文献
  • DAY04:Vue.js 指令与事件处理深度解析之从基础到实战
  • 弹窗表单的使用,基于element-ui二次封装
  • 十三、基于大模型的在线搜索平台——整合function calling流程
  • 萤石无插件取流巡检组件,便捷支持多屏预览与回放
  • MCP(Model Context Protocol,模型上下文协议)
  • tcpdump 的用法
  • [sklearn] 特征工程
  • LeRobot 项目部署运行逻辑(五)——intelrealsense.py/configs.py
  • 【PostgreSQL】不开启归档模式,是否会影响主从库备份?
  • OrangePi Zero 3学习笔记(Android篇)4 - eudev编译(获取libudev.so)
  • 边界网关协议 - BGP【高级】
  • 蓝绿激光对潜通信介绍
  • 【官方题解】StarryCoding 入门教育赛 2 | acm | 蓝桥杯 | 新手入门
  • 画家沈燕的山水实验:在传统皴法里植入时代密码
  • mysql性能提升方法大汇总
  • 【kafla扫盲】FROM GPT
  • 基于51单片机步进电机控制—9个等级
  • async/await 原理揭秘
  • Windows11下通过Docker安装Redis
  • USB学习【4】协议层数据格式
  • C++八股 —— 函数指针与指针函数
  • PPI-ID: 德克萨斯大学研究团队最新款蛋白-蛋白互作(PPI)预测工具上线
  • Ascend的aclgraph(一)aclgraph是什么?torchair又是怎么成图的?
  • 2025年 全新 AI 编程工具 Cursor 安装使用教程
  • 2025数维杯数学建模C题完整限量论文:清明时节雨纷纷,何处踏青不误春?
  • 空间复杂度** 与 **所需辅助空间**