shell 删除多余分支

135 阅读1分钟

背景

经过长时间的迭代,难免产生多个分支。实际我们仅仅需要保留几个必要的分支主分支测试分支特性分支。其余的历史迭代分支都应该删除。

想到可以通过 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