如何在沒有本地跟蹤分支的情況下刪除所有遠程分支機構?如何在沒有本地跟蹤分支的情況下刪除遠程分支機構?
我有大約30個沒有本地分支(已被刪除)的遠程分支和20個跟蹤到遠程的本地分支。
我發現好幾篇關於如何做相反的文章。
編輯:尋找一個單線來解決這個問題,以便我不需要手動刪除這些分支一個接一個。
如何在沒有本地跟蹤分支的情況下刪除所有遠程分支機構?如何在沒有本地跟蹤分支的情況下刪除遠程分支機構?
我有大約30個沒有本地分支(已被刪除)的遠程分支和20個跟蹤到遠程的本地分支。
我發現好幾篇關於如何做相反的文章。
編輯:尋找一個單線來解決這個問題,以便我不需要手動刪除這些分支一個接一個。
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
與@託雷克的很好的建議更新修改。
小改進:替換'git branch -a | grep remotes' with'git for-each-ref refs/remotes/origin --format'%(refname:short)''(你仍然需要從每個名字中刪除'origin /')。 – torek
可能重複[如何從本地和遠程刪除Git分支?](http://stackoverflow.com/questions/2003505/how-to-delete-a-git-branch-both-locally-and-遠程) – Makoto
雖然重複會談有關本地刪除,但它也非常清楚地談論遠程刪除。 – Makoto
@Makoto是的,它處理遙控器,但只討論當你想同時刪除兩個。我的當地人已被刪除。 – Bradford