本人电脑为mac,如果是window不知道生效命令是否chmod +x
- 在.git 的hooks里面对应的钩子代码最下面添加即可,我放到per-push里面了,是在当前分支提交到远程仓库之前先自动合并提交到远程仓库之后才会提交当前分支
- 如果不生效请在hooks目录下打开命令行运行chmod +x per-push(per-push为你修改的文件)
# 获取最新提交的提交信息
commit_msg=$(git log --format=%B -n 1 HEAD)
commint_build_string=$(echo "$commit_msg" | grep -o -- "--build.*")
# 检查提交信息中是否包含指定参数
target_branch=sit # 目标分支
# 检查提交信息中是否包含 --merge
if [[ $commit_msg == *"--merge"* ]]; then
# 检查当前分支是否为 sit 或者 master,如果不是则执行合并操作
current_branch=$(git rev-parse --abbrev-ref HEAD)
echo $current_branch
# 当分支不是下列分支时且加了--merge参数自动合并代码到target_branch
if [[ $current_branch != "sit" && $current_branch != "dev" && $current_branch != "uat" && $current_branch != "master" ]]; then
# 自动切换到 target_branch 分支
git checkout $target_branch
# 合并当前分支到 target_branch 分支
git merge $current_branch -m "Merge branch '$current_branch' into $target_branch $commint_build_string"
# 推送到远程仓库
git push origin $target_branch
# 返回到之前的分支
git checkout -
fi
fi