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

效果如下

posted @   刘一二  阅读(265)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示