如何在没有本地跟踪分支的情况下删除所有远程分支?
我有大约30个没有本地分支(已删除)的远程分支和20个跟踪远程分支的本地分支。
我找到了几篇关于如何做相反的帖子。
编辑:寻找单行代码解决此问题,以便我不必手动删除这些分支。
答案 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的好建议。