如何在没有本地跟踪分支的情况下删除远程分支?

时间:2016-10-03 19:52:41

标签: git

如何在没有本地跟踪分支的情况下删除所有远程分支?

我有大约30个没有本地分支(已删除)的远程分支和20个跟踪远程分支的本地分支。

我找到了几篇关于如何做相反的帖子。

编辑:寻找单行代码解决此问题,以便我不必手动删除这些分支。

1 个答案:

答案 0 :(得分:2)

branch_not_delete=( "master" "develop")

for branch in `git for-each-ref refs/remotes/origin --format '%(refname:short)' | grep -v HEAD`;  do
    branch_name="$(gawk '{gsub("origin/", "");print}' <<< $branch)"
    local_exists="$(git rev-parse --verify $branch_name 2> /dev/null)"

    if [[ -z "${local_exists// }" ]]; then
      if ! [[ " ${branch_not_delete[*]} " == *" $branch_name "* ]]; then
        read -p "Would you like to delete $branch_name (yes/no) [no]: " yesno
        yesno=${yesno:-no}
        if [[ "$yesno" == "yes" ]]; then
          git push origin :$branch_name
        fi
      fi
    fi
done 

https://stackoverflow.com/a/38776671/5399371修改

更新了@ torek的好建议。