#!/bin/sh function git_branch_delete_all_but() { branch_names_to_keep=("$@") branch_names_to_keep+=("master") # do not delete master branch_names_to_keep+=("main") # do not delete main branch_names_to_keep+=$(git symbolic-ref --short -q HEAD) # do not delete current branch branch_names_to_delete=() for branch_name in $(git for-each-ref --format='%(refname:short)' refs/heads/); do if [[ ! " ${branch_names_to_keep[*]} " =~ " ${branch_name} " ]]; then branch_names_to_delete+=$branch_name fi done for branchName in "${branch_names_to_delete[@]}" do git branch -D $branchName done }