1. 批量删除远程已经合并到master的分支
创建脚本 removeBranch.sh,内容如下
#!/bin/bash
# 要排除某个分支就继续在后面加上 |(branch$)
list=(
$(git branch --merged master | egrep -v "(^\*|(test$)|(master$)|(online$))")
)
for branch in ${list[@]}
do
# 打印分支信息
echo $branch;
# 删除远程分支
git push origin :$branch
# 删除本地分支
git branch -D $branch
done
执行 sh removeBranch.sh
最好是在master下面操作,因为当前所在分支可以已经合并到master了,造成脚本执行阻断。
在本地添加所有分支的方法
把 .git\refs\remotes\origin
里面的内容拷贝到 .git\refs\heads
2. rebase origin/master操作
创建脚本 rebaseBranch.sh,内容如下
#!/bin/bash
# 要排除某个分支就继续在后面加上 |(branch$)
list=(
$(git branch --no-merged master | egrep -v "(^\*|(test$)|(master$)|(online$))")
)
git fetch
for branch in ${list[@]}
do
# 打印分支信息
echo $branch;
git checkout $branch
git rebase origin/master
done
在任意分支上面执行 sh rebaseBranch.sh
3. 监测合并搭到 master,做一些事情
- 自动切换online执行
git rebase master
在.git/hooks
下面添加post-merge
,添加如下内容
#!/bin/sh
echo "$(git rev-parse --abbrev-ref HEAD)"
if [ "$(git rev-parse --abbrev-ref HEAD)" = "master" ]; then
# 执行特定操作
git checkout online
git rebase master
fi
注意要想使 post-merge
钩子有效,还要设置操作权限,chmod +x .git/hooks/post-merge
,windows 里面可以在 git bash
里面执行。
- 结合合并到master的时候删除已经合并到master的分支
#!/bin/bash
# 打印当前 HEAD 的分支
# echo "$(git rev-parse --abbrev-ref HEAD)"
# 找出合并到master的分支,过滤掉test、master、online,要排除某个分支就继续在后面加上 |(branch$)
list=(
$(git branch --merged master| egrep -v "(^\*|(test$)|(master$)|(online$))")
)
if [ "$(git rev-parse --abbrev-ref HEAD)" = "master" ]
then
for branch in ${list[@]}
do
# 打印分支信息
echo $branch;
# 删除本地分支
git branch -D $branch
done
# 执行特定操作
git checkout online
git rebase master
fi