Вы могли бы этот маленький предмет ... Он тянет список и запрашивает подтверждение каждого пункта, прежде чем окончательно удалить все выборы ...
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.
Окончание на 'мерзавца ветви -D/-d' отлично работает для меня. Возможно, вы захотите обновить свою версию (возможно, из самой последней папки git.git contrib). – Cascabel
Вместо 'git отрасли | ... 'вы можете использовать' $ (git for-each-ref -format = '% (refname: short)' refs/heads/3. *) '. Это длиннее, я знаю, но это гарантированно будет подходящим выходом, в то время как 'git branch' имеет довольно вывод с такими вещами, как' * 'и' -> '(для symrefs), которые могут испортить вам скрипты/однострочные. – Cascabel
+1 намного проще, чем ответ выше – nischayn22