Bu küçük öğeyi beğenebilirsiniz ... Listeyi çeker ve sonunda tüm seçimleri silmeden önce her öğenin onayını ister ...
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`
Silme işlemlerini zorlamak için -D'yi kullanın (her zamanki gibi).
Okunabilirlik için, işte satır satır ayrılmış ...
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`
İşte xargs yaklaşımı ...
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
Sonunda bunu .bashrc dosyamda kullanmayı seviyorum
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'
Bu şekilde söyleyebilirim
gitSelect | xargs git branch -D.
git branch -D $(git branch | grep 3.2*)- bu benim için çalıştı. Adı "3.2" ile başlayan şubeleri siler.grep- çıktıda desen eşleşmesi (git branchbu durumda).$()- sonucu yürütmek ve yerleştirmek anlamına gelir.|- zincirleme.