介绍
git hooks,即git 钩子,定义为能在特定的重要动作发生时触发自定义脚本。
git 的hook分为两种,客户端hooks和服务端hooks。
客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。
git 官网https://git-scm.com/docs/githooksgit hooks在git项目中的位置在
.git/hooks
目录下,初始化时由以下sample组成
更多参考内容可访问 git hooks 简介与使用 - 简书查看
客户端hooks设置
在项目结构中增加目录 ./githooks 把 .git/hooks 中的文件复制出来
切换githooks目录
git config --global core.hooksPath config/githooks
重命名commit-msg.sample文件名为commit-msg 使钩子文件生效
在文件中添加内容:
# commit message 拦截
prefix_list=(fix,feat,pref,docs,style,refactor,test,chore,build,ci,revert)
MSG=`awk '{printf("%s",$0)}' $1`
if [[ ! "${prefix_list[@]}" =~ ${MSG%:*} ]];then
echo "-------------------------------------------------------------------"
echo "${MSG%:*} 不在message前缀允许范围《 ${prefix_list[*]}》,详见README "
echo "本次提交失败,请完善commit message,再提交"
echo "-------------------------------------------------------------------"
exit 1
fi
测试: