que puede gustarte este pequeño artículo ... Se tira de la lista y solicita la confirmación de cada artículo antes de fin de eliminar todas las selecciones ...
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`
Uso -D para obligar a las deleciones (como de costumbre).
Para facilitar la lectura, aquí es que la línea interrumpida por la línea ...
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`
aquí es el enfoque 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
por último, me gustaría tener esto en mi. 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'
De esa manera yo sólo puedo decir
gitSelect | xargs git branch -D.
La finalización de 'git rama -D/-d' funciona bien para mí. Puede que desee actualizar el suyo (tal vez del directorio contrib git.git más reciente). – Cascabel
en lugar de 'git branch | ... 'podrías usar' $ (git para-cada-ref --formato = '% (refname: corto)' refs/heads/3. *) '. Es más largo, lo sé, pero está garantizado que es una salida adecuada, mientras que 'git branch' tiene una salida bonita con cosas como' * 'y' -> '(para symrefs) que pueden arruinarlo en scripts/one-liners. – Cascabel
+1 mucho más simple que la respuesta anterior – nischayn22