Вам может понравиться этот маленький элемент ... Он тянет список и запрашивает подтверждение каждого элемента, прежде чем окончательно удалить все выбранные элементы ...
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в данном случае).$()- означает выполнить и разместить результат.|- цепочки.