Git 如何在没有本地跟踪分支的情况下删除远程分支?
如果没有本地跟踪分支,如何删除所有远程分支 我有大约30个没有本地分支(已删除)的远程分支和20个跟踪远程分支的本地分支 我找到了一些关于如何做相反的事情的帖子 编辑:寻找一个一行程序来解决这个问题,这样我就不必手动逐个删除这些分支。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
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/
)。