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

Git 如何在没有本地跟踪分支的情况下删除远程分支?,git,Git,如果没有本地跟踪分支,如何删除所有远程分支 我有大约30个没有本地分支(已删除)的远程分支和20个跟踪远程分支的本地分支 我找到了一些关于如何做相反的事情的帖子 编辑:寻找一个一行程序来解决这个问题,这样我就不必手动逐个删除这些分支。branch\u not\u delete=(“master”“develope”) branch_not_delete=( "master" "develop") for branch in `git for-each-ref refs/remotes/orig

如果没有本地跟踪分支,如何删除所有远程分支

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

我找到了一些关于如何做相反的事情的帖子

编辑:寻找一个一行程序来解决这个问题,这样我就不必手动逐个删除这些分支。

branch\u not\u delete=(“master”“develope”)
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 
对于“git for each refs/remotes/origin——格式“%”(refname:short)“grep-v HEAD”中的分支;做
branch_name=“$(gawk'{gsub(“origin/”,“”);print}'可能的重复虽然重复谈到本地删除,但它也非常清楚地谈到远程删除。@Makoto是的,它涉及远程,但只讨论何时要同时删除这两个。我的本地已被删除。您不必同时删除这两个;您可以在删除本地文件之前删除远程文件,或在删除远程分支之前先删除本地分支。顺序无关紧要。此处出现的任何其他答案都将与另一个问题中已说明的内容相呼应。@Makoto的重点是,有30个远程分支要删除,我不想逐个删除,而是在寻找一行。如果无法删除,请重新打开提供的次要改进:将
git分支-a | grep remotes
替换为
git for each ref/remotes/origin——格式“%”(refname:short)
(您仍然需要从每个名称中删除
origin/
)。