Вам може сподобатися цей маленький предмет ... Він витягує список і просить підтвердити кожен елемент, перш ніж остаточно видалити всі виділення ...
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`
Використовуйте -D для примусового видалення (як зазвичай).
Щодо читабельності, ось що розбито по черзі ...
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`
ось підхід 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
нарешті, мені подобається мати це у своєму .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'
Таким чином я можу просто сказати
gitSelect | xargs git branch -D.
git branch -D $(git branch | grep 3.2*)
- це працювало для мене. Він видаляє гілки, назва яких починається з "3.2".grep
- відповідність шаблону у висновку (git branch
у цьому випадку).$()
- означає виконати і розмістити результат.|
- прикування.