首页 > 其他分享 >git设置全局钩子函数检查commit-message

git设置全局钩子函数检查commit-message

时间:2024-09-10 19:15:53浏览次数:10  
标签:core git hooksPath 钩子 -- commit message 全局

步骤

1、创建一个文件夹保存钩子文件,如"D:\softwares\Git\git-hooks"
2、设置全局钩子函数地址:

git config --global core.hooksPath "D:\softwares\Git\git-hooks"

3、编写prepare-commit-msg文件

下面的commit-msg只能以[ADD],[MOD],[BUG]开头

#!/bin/sh

###### 校验提交信息 #########
# 从钩子脚本参数中获取提交信息
COMMIT_MESSAGE_FILE=$1
COMMIT_SOURCE=$2
SHA1=$3

COMMIT_MESSAGE=$(<"$COMMIT_MESSAGE_FILE")
PREFIXES=("\[ADD\]" "\[MOD\]" "\[BUG\]")

  
PREFIX_FOUND=false
for PREFIX in "${PREFIXES[@]}"; do
  # 使用 grep -q 检查提交信息是否以特定前缀开头,允许前缀后无空格
  if echo "$COMMIT_MESSAGE" | grep -q "^$PREFIX" ; then
    PREFIX_FOUND=true
    break
  fi
done

  
if [ "$PREFIX_FOUND" = false ]; then
  echo "警告: 提交信息不以 [ADD], [MOD], 或 [BUG] 开头。"
  echo "请确保你的提交信息以正确的前缀开头。"
  # 如果你想要阻止提交,可以取消下面一行的注释
  exit 1
fi

其他

1、查看当前git配置的core.hooksPath

git config --get core.hooksPath

2、取消全局设置的core.hooksPath

git config --global --unset core.hooksPath

注意

git会优先使用全局的,如果全局的设置了,不会执行其他仓库里的.git/hooks

标签:core,git,hooksPath,钩子,--,commit,message,全局
From: https://www.cnblogs.com/duanlvxin/p/18406981

相关文章

  • gitee(码云)使用教程
    1.下载gitee(码云),可以用迅雷;下载好后注册账号并登录2.配置公钥ssh-keygen-ted25519-C"GiteeSSHKey"输入这行命令,按3次回车,演示如下:生成的公钥就在红框文件夹下复制该字符串,进入gitee的设置中,找到公钥粘贴该字符串配置完后可用该命令测试[email protected]......
  • git 中止merge
    今天的项目工程文件产生了冲突,没办法,显示包内容。三下五除二把冲突解决了,结果发现项目的project文件还是不能打开,但是已经无法回归到解决冲突之前的状态了。怎么办,问了公司的大牛,执行gitmerge--abort命令回到解决冲突之前的状态。再重新执行gitpull操作。重新解决冲突,注意看仔......
  • 执行Git命令,Git都干了什么?图文带你从基础到进阶了解Git都做了什么
    0.前言Git仓库中的提交记录保存的是你目录下的所有的文件快照,就像把这些文件粘贴复制了一样,但是要比粘贴复制更加优雅。Git希望提交记录尽可能保持轻量,因此在每次提交的时候,它不会盲目的去复制你的整个目录。条件允许的情况下,它会将当前版本与仓库中的上一个版本进行对比,并把所有的......
  • raw.githubusercontent.com未能解析” 解决方案
    1.操作场景通过windows11powershell下载依赖包2.报错信息如下irm:未能解析此远程名称:'raw.githubusercontent.com'所在位置行:1字符:27+&([scriptblock]::Create((irm"https://win11debloat.raphi.re/")))+~~~~~~~~~~~~~~~~~~~~~~~~......
  • git 回退之前某次提交
    git版本回退,用于误提交或者版本回退一、回滚到之前的某次版本,且该版本后的提交都不要(用于版本回退)1)、首先查看版本号,用gitlog命令查看要回退的版本对应的commitIdcommit17829e208cd170928fd0f3adb3f3bde1b1eabb762)、回滚到之前某个版本(执行后本地已经回滚,远程仓库还......
  • 用 SQL 写的俄罗斯方块游戏「GitHub 热点速览」
    在开始介绍上周热门开源项目之前,要插播一条开源新闻:Nginx已正式迁移至GitHub。近日,Nginx官方宣布将Nginx开源项目,从Mercurial迁移至GitHub代码托管平台,并开始接受PR形式的贡献、Issues问题反馈和功能请求等,GitHub上的Nginx项目终于“活”了!GitHub地址→github......
  • git修改本地代理
    1.本人在使用gitclone别人的写好的第三方库时遇到,fatal:unabletoconnecttogithub.com:github.com[0:20.205.243.166]:errno=Unknownerror即无法克隆GitHub上的库。2.解决思路:在一些网络环境可能会禁用GitHub需要使用的端口号,所以使用本地代理,也许可以进行克隆。3.解......
  • Git Extensions:一个.NET开源的 Git 图形用户界面(GUI)工具
    前言今天大姚给大家分享一个.NET开源、免费的用于管理Git存储库的独立图形用户界面(GUI)工具,它还与Windows资源管理器和 MicrosoftVisualStudio(2015/2017/2019/2022)集成:GitExtensions。Git新手指南:从基础到实践的全方位教程功能介绍图形用户界面:提供一个友好的......
  • flutter开发Invalid argument(s): Illegal argument in isolate message: object is u
    Invalidargument(s):Illegalargumentinisolatemessage:objectisunsendable-Library:'dart:async'Class1.问题原因:使用flutterisolate的时候新开的isolate访问了其他isolate的变量导致的比如下面例子是错误的写法:finalzhangsan="张三";//这里变量是主隔......
  • git分支命名
    master (主分支,永远是可用的、稳定的、可直接发布的版本,不能直接在该分支上开发)develop (开发主分支,代码永远是最新,所有新功能以这个分支来创建自己的开发分支,该分支只做只合并操作,不能直接在该分支上开发)feature-xxx (功能开发分支,在develop上创建分支,以自己开发功能模......