Git钩子-每次提交信息添加分支名称
Git钩子是一组脚本,这些脚本对应着Git仓库中的特定事件,每一次事件发生时,钩子会被触发。这允许你可以定制化Git的内部行为,在开发周期中的关键点上触发执行定制化的脚本。
钩子脚本文件通常放置于项目目录的.git/hooks
文件夹下。Git会在初始化项目时自动在这个文件夹下放置一些样例脚本。如果你查看.git/hooks
文件夹下,会找到如下的文件:
applypatch-msg.sample pre-push.sample commit-msg.sample pre-rebase.sample post-update.sample prepare-commit-msg.sample pre-applypatch.sample update.sample pre-commit.sample
这些文件基本上涵盖了可以使用的钩子,只不过.sample
扩展名不会让脚本内容生效。
安装一个钩子最简单的方式就是删除.sample
扩展名。或者如果你从头开始写好了一个钩子脚本,只需要将其命名为上面所列的文件名并去除.sample
扩展名。
提交消息后追加分支名称
#!/bin/sh COMMIT_MSG_FILE=$1 COMMIT_SOURCE=$2 SHA1=$3 #提交信息 COMMIT_MSG=`cat $COMMIT_MSG_FILE` #当前分支名称 BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD) #判断提交信息中是否包含当前分支名称 RESULT=$(echo $COMMIT_MSG | grep "${BRANCH_NAME}") #如果不包含,则追加分支名称 if [[ "$RESULT" == "" ]] then #换行 echo " " >> "$COMMIT_MSG_FILE" #追加信息 echo "#$BRANCH_NAME" >> "$COMMIT_MSG_FILE" fi if test -z "$COMMIT_SOURCE" then /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" fi
效果如下
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通