背景
经过长时间的迭代,难免产生多个分支。实际我们仅仅需要保留几个必要的分支主分支
、测试分支
、特性分支
。其余的历史迭代分支都应该删除。
想到可以通过 shell
脚本去一次性的删除不必要的分支,避免一个一个删除。
正文
使用 shell 能力
-
变量
数组
array_name=(value1 value2 ... valuen)
-
参数
$@
所有向脚本传递的参数。$1
第一个向脚本传递的参数ss.sh 123
则$1
等同于123
-
流程控制
if else fi
if condition then command1 command2 ... commandN else command fi
for 循环
for var in item1 item2 ... itemN do command1 command2 ... commandN done
-
echo
echo string
-
read
命令用于从标准输入读取数值 -
=~
用来判断其左侧的参数是否符合右边的要求 -
grep
搜索字符串
脚本
#!/usr/bin/env bash
if [ "$1" == "" ]; then
echo "输入保留的分支"
else
keepBranchs=("$@")
echo -n "确定删除 '${keepBranchs[*]}' 以外的分支吗?(y/n) "
read REPLY
echo ''
if [[ $REPLY =~ ^[yes|y] ]]
then
for branch in $(git branch | cut -c 3-);
do
echo "${keepBranchs[@]}" | grep -wq "$branch" && echo "跳过 $branch" || echo $(git branch -D "$branch")
done
fi
fi