Você pode gostar deste pequeno item ... Ele puxa a lista e solicita a confirmação de cada item antes de finalmente excluir todas as seleções ...
git branch -d `git for-each-ref --format="%(refname:short)" refs/heads/\* | while read -r line; do read -p "remove branch: $line (y/N)?" answer </dev/tty; case "$answer" in y|Y) echo "$line";; esac; done`
Use -D para forçar exclusões (como de costume).
Para facilitar a leitura, aqui está o que separamos linha por linha ...
git branch -d `git for-each-ref --format="%(refname:short)" refs/heads/\* |
while read -r line; do
read -p "remove branch: $line (y/N)?" answer </dev/tty;
case "$answer" in y|Y) echo "$line";;
esac;
done`
aqui está a abordagem xargs ...
git for-each-ref --format="%(refname:short)" refs/heads/\* |
while read -r line; do
read -p "remove branch: $line (y/N)?" answer </dev/tty;
case "$answer" in
y|Y) echo "$line";;
esac;
done | xargs git branch -D
finalmente, eu gosto de ter isso no meu .bashrc
alias gitselect='git for-each-ref --format="%(refname:short)" refs/heads/\* | while read -r line; do read -p "select branch: $line (y/N)?" answer </dev/tty; case "$answer" in y|Y) echo "$line";; esac; done'
Dessa forma, eu posso apenas dizer
gitSelect | xargs git branch -D.
git branch -D $(git branch | grep 3.2*)
- isso funcionou para mim. Exclui os ramos cujo nome começa com "3.2".grep
- correspondência de padrões na saída (git branch
neste caso).$()
- significa executar e colocar o resultado.|
- encadeamento.