Puede que le guste este pequeño elemento ... Extrae la lista y solicita la confirmación de cada elemento antes de eliminar finalmente 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`
Use -D para forzar eliminaciones (como de costumbre).
Para facilitar la lectura, aquí está esa línea dividida línea por 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í está 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
finalmente, me gusta 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 solo puedo decir
gitSelect | xargs git branch -D.
git branch -D $(git branch | grep 3.2*)
- Esto funcionó para mí. Elimina las ramas cuyo nombre comienza con "3.2".grep
- coincidencia de patrones en la salida (degit branch
en este caso).$()
- significa ejecutar y colocar el resultado.|
- encadenamiento