リモートに存在しないローカル追跡ブランチを削除する方法


770

これgit remote prune originで、リモートにないローカルブランチを削除できます。

しかし、それらのリモートブランチから作成されたローカルブランチも削除したいと思います(それらがマージされていないかどうかを確認するとよいでしょう)。

これどうやってするの?



1
ワンライナーのクロスプラットフォームは、キーボードで眠っている猫のようには見えません:(ドライラン npx git-removed-branches)またはnpx git-removed-branches --prune(実際の)。node.jsがすでにインストールされている必要があります。詳細については、以下の回答を 参照してください。
クリスティアンディアコネスク

回答:


892

プルーニング後、を使用してリモートブランチのリストを取得できますgit branch -r。リモートトラッキングブランチを含むブランチのリストは、で取得できますgit branch -vv。したがって、これらの2つのリストを使用すると、リモートのリストにないリモート追跡ブランチを見つけることができます。

この行は、トリックを実行する必要があります(必須、bashまたはzsh、標準のBourneシェルでは機能しません)。

git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d

この文字列は、リモートブランチのリストを取得し、それをegrep標準入力に渡します。そして、リモートトラッキングブランチを持つブランチをgit branch -vvフィルタリングし(を持つブランチを使用してフィルタリングしorigin)、ブランチ名となるその出力の最初の列を取得します。最後に、すべてのブランチ名をブランチ削除コマンドに渡します。

この-dオプションを使用しているため、このコマンドを実行したときに、現在のブランチにマージされていないブランチは削除されません。

また、git fetch --prune 最初に実行する必要があることを忘れないでください。そうしないgit branch -rと、リモートブランチが引き続き表示されます。


12
これは完璧に機能しました。どういうわけか、git fetch -p常に十分ではありませんか?
Stefan Hendriks 2013

16
残念ながら、これはWindowsのGit Bashでは機能しません。 sh.exe": cannot make pipe for process substitution: Function not implemented sh.exe": egrep -v -f /dev/fd/0: No such file or directory fatal: branch name required 何か案は?
ラダー2014

37
エイリアスとして追加するには:alias git-remove-untracked='git fetch --prune && git branch -r | awk "{print \$1}" | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk "{print \$1}" | xargs git branch -d'
bryant1410

126
これを行う将来のgitリリースに提案されているコマンドはありますか?このコマンドは、私の猫が私のラップトップ上にあったようです
Bron Davies

5
git branch -Dコマンドの最後でを使用すると、マージ時にコミットを押しつぶす傾向があり、でThe branch x is not fully merged実行するとエラーが発生するため、より効果的でした-d
マテウスゴンディム

430

すでにマスターにマージされているすべてのローカルブランチを削除する場合は、次のコマンドを使用できます。

git branch --merged master | grep -v '^[ *]*master$' | xargs git branch -d

詳細情報


4
完璧に機能したと思います!この回答が受け入れられた回答とは異なることを誰かが説明できますか?
Andrew

11
マイナーな改善:xargs -r git branch -d削除するブランチがない場合は何も実行されないように使用します。-rフラグはどこでも利用できるとは限らないことに
Jacob Wang

8
gitの色が原因でgrepが一致しない可能性があるため:git branch --merged master --no-color | grep -v '^* master$' | xargs -n1 -r git branch -d
Mike D

5
@NickResは、あなたがとてもよく尋ねたように見て、git branch --merged masterマスターにマージされたブランチをリストし、中央のgrepパーツはマスター自体を除外し(マスターを削除したくない!)、最後のxargsパーツはgit branch -dそれぞれに対して実行(ブランチの削除)します結果。または、回答に記載されている詳細情報リンクを読むこともできます;)
jackocnr 2017年

14
改善:git branch --merged master | egrep -v '^\s*\*?\s*master$' | xargs git branch -d。git v2.10.1からの出力は、マスターがチェックアウトされると「* master」と表示されます。アスタリスクの有無に関係なく、マスターを削除します。
エステバン

162

によって提示された情報の中に、git help fetchこの小さなアイテムがあります:

 -p, --prune
        After fetching, remove any remote-tracking branches which no longer exist on the remote.

それで、おそらく、git fetch -pあなたが探しているのは何ですか?

編集:わかりました、事実の3年後もこの回答についてまだ議論している人のために、なぜ私がこの回答を提示したのかについてもう少し情報があります...

まず、OPは、「リモートブランチから作成されたローカルブランチも削除します(リモートには存在しなくなります)」と述べています。これはで明確に可能ではありませんgit。ここに例があります。

中央サーバーにリポジトリがあり、それにとと呼ばれる2つのブランチがあるとABます。そのリポジトリをローカルシステムにクローンすると、クローンにはorigin/Aandと呼ばれるローカル参照(実際のブランチではない)が含まれorigin/Bます。今、私が次のことをするとしましょう:

git checkout -b A origin/A
git checkout -b Z origin/B
git checkout -b C <some hash>

ここで関連する事実は、なんらかの理由で、ローカルリポジトリにオリジンとは異なる名前のブランチを作成することを選択したことと、オリジンリポジトリに(まだ)存在しないローカルブランチがあることです。

ここで、リモートリポジトリのABブランチの両方を削除し、ローカルリポジトリ(git fetchなんらかの形式)を更新するorigin/Aorigin/Bします。これにより、ローカル参照が消えて消えます。さて、私の地元のレポは、まだ3つの分岐がありAZC。これらのいずれにも、リモートリポジトリに対応するブランチはありません。そのうちの2つは「...のリモートブランチから作成された」ものですがB、元々呼び出されていたブランチがあったことを知っていても、それZB、それはおそらく正当な理由で、プロセス中に名前が変更されたためです。したがって、実際には、ブランチのオリジンメタデータを記録する外部プロセスがないか、履歴を知っている人間がいない場合、3つのブランチのどれがOPが削除の対象となっているかを特定することはできません。git自動的に維持されない外部情報がなければ、git fetch -p取得できるのはほぼ同じです。OPが要求したことを文字どおりに試行する自動方法では、分岐が多すぎるか、OPがそうでない場合に欠落するリスクがあります。削除したい。

他のシナリオもあります。たとえば、origin/A3つの異なるブランチを作成して、何かへの3つの異なるアプローチをテストしてから、離れる場合などorigin/Aです。現在、3つのブランチがありますが、明らかに名前ごとに一致するわけではありませんが、それらはから作成されたorigin/Aため、OPの質問を文字どおり解釈するには、3つすべてを削除する必要があります。しかし、それらを一致させる信頼できる方法を見つけることができれば、それは望ましくないかもしれません...


108
ローカルブランチは削除されず、ブランチへのリモートポインタのみが削除されます
Jaap

4
リモートには存在せず、チェックアウトも行っていないローカルブランチのみが削除されます。
Jarek Jakubowski、2015年

15
Jaapが指摘するように、質問をより注意深く読む必要があります。この回答に投票する人は、質問が本当に何であるかについても読む必要があります。
セーレンBoisen

4
はい、これはまさに私がやりたかったことです!@SørenBoisen過去2年間、あなたの意見を再検討する時間があることを願っています... SOに投稿されたコンテンツが、ときどき混乱するOPが求めるものにのみ関連している場合は、多くの情報を削除します。公式ガイドライン以外に、このサイトの使用方法をユーザーに指示することを想定しないでください。また、直交するが有用な回答を妨げないことは明らかです。
フェリックス・ガニョン-グルニエ

6
@FélixGagnon-Grenierこれが私の答えの私の問題です:1)質問は非常に明確で、OPは明らかに混乱していません。2)この回答は、質問に回答しないことは言及していません!3)質問にはすでに存在しないリモート追跡ブランチをプルーニングする方法がすでに記載されているため、ゼロの値が追加されます。
セーレンBoisen

117

これにより、リモート追跡ブランチがプルーニングされたローカルブランチが削除されます。(masterブランチにいることを確認してください!)

git checkout master
git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -d

詳細:

  • git branch -vv リモートがプルーニングされたローカルブランチに対して「gone」を表示します。

    mybranch abc1234 [origin/mybranch: gone] commit comments
    
  • -dマージされたかどうかを確認します(-D削除されます)

    error: The branch 'mybranch' is not fully merged.
    

16
次のコマンドを使用してコマンドを短くすることもできますgit branch -vv | awk '/: gone]/{print $1}' | xargs git branch -d
chiborg

4
git branch -dブランチをと比較するため、これを行う前にマスターにいる必要があることを指摘するだけですHEAD
Steve Bennett

優秀な!これを探して探しました。自分で答えを見つけ出す前に、あなたの答えを見ていたらよかったのに。数分節約できたでしょう。これが私のもう1つの回答です。stackoverflow.com
Karl Wilbur

1
私は、同様のGitの別名になってしまったawkが何らかの理由で仕事をしなかったので、カットを使用:prunelocal = !sh -c \"git checkout -q master && git fetch -q --prune && git branch -vv | git grep ': gone]' | cut -d' ' -f3 | xargs git branch -d\"
Zitrax

3
ああおい...あなたが答えを更新して、彼らがマスターでなければならないことを人々に知らせる必要があります。別のブランチからこれを実行しただけです。@ stevebennet2有益なコメントをありがとう
GrayedFox

53

フェッチ時に削除されたリモートブランチへの参照を自動的に削除するようにGitを設定できます。

git config --global fetch.prune true

呼び出し時git fetchまたはgit pullその後、削除されたリモートブランチへの参照は自動的に削除されます。


5
これはローカルブランチを削除せず、それらへの参照だけを削除しますよね?
クリントイーストウッド2017年

@ClintEastwood リモートブランチへの参照のみを削除します。を使用して、リモートブランチへの参照を一覧表示できますgit branch -r
wedesoft

52

あなたのためにそれを行うきちんとしたNPMパッケージがあります(そしてそれはクロスプラットフォームで動作するはずです)。

それをインストールします: npm install -g git-removed-branches

そしてgit removed-branches、古いローカルブランチをすべて表示し、git removed-branches --prune実際にそれらを削除します。

詳細はこちら。


1
これは本当により多くの賛成票を持つべきです。プラットフォームに関係なく、人生を楽にしてくれてありがとう。
暗号化

便利な小さな拡張。Windows 10にインストールされ、正常に機能しました。少し注意:マージされていないブランチはプルーン可能と見なされます(ブランチ-dが呼び出されたにもかかわらず--pruneを実行するとエラー)。リストを表示しました。
user2864740

1
これが私のお気に入りの答えです。npx git-removed-branches夢のように機能します。
Drazisil

はい!これにはもっと賛成票があるはずです!
CLI

ツールがgitの観点から何をしているかの概要を示すことは有用でしょう。
ryanwebjackson

41

Windowsソリューション

Microsoft Windows Powershellの場合:

git checkout master; git remote update origin --prune; git branch -vv | Select-String -Pattern ": gone]" | % { $_.toString().Trim().Split(" ")[0]} | % {git branch -d $_}

説明

git checkout master マスターブランチに切り替えます

git remote update origin --prune リモートブランチを剪定

git branch -vvすべてのブランチの詳細な出力を取得します(gitリファレンス

Select-String -Pattern ": gone]" リモートから削除されたレコードのみを取得します。

% { $_.toString().Split(" ")[0]} ブランチ名を取得する

% {git branch -d $_} ブランチを削除します


いい例です。またはgit remote prune origin、select-stringが最新バージョンのgitと一致しないように見えます。使用を検討してくださいConvertFrom-String -TemplateContent
バーニーホワイト

3
最新バージョンのgitでは末尾にスペースが追加されているため、Splitはブランチ名を取得できません。ド.toString()トリム()スプリット(」「)とそれだろう。。
クリス・ハインズ

ここでは私のものです:git checkout master; git pull; git remote prune origin; git branch --merged | select-string -notmatch "master" | % { $_.toString().Trim().Split(" ")[0]} | % {git branch -d $_}
Omzig

@Omzigそれは何が違うのですか?説明できますか?
chris313​​89

@ chris313​​89、私はマスターから欠落しているすべてを取得するためにそこにプルを持っています、そして私はブランチをマスターではなく--mergedに変更しました-私は--mergedブランチのみを削除することを確認したいと思います。それだけで気分が良くなります;)
Omzig

27

リモートトラッキングブランチがリモートから削除されたローカルブランチが一覧表示されます

$ git remote prune origin --dry-run

追跡されていないこれらのローカルブランチをローカルから逆参照したい場合

$ git remote prune origin

19
これは質問の答えにはなりません。これはOPがすでに知っていることです。
ケンウィリアムズ

2
私も同意しますが、「リモートに存在しないローカル追跡ブランチをプルーニングする方法」を検索すると、これはトップリンクであり、この回答はタイトルと一致します(問題の完全な説明を読んだ場合はそうではありません)。賛成票を投じた理由は次の
027

これはローカルブランチを削除しません。まだそこにこれを実行した後に

@Xinは--dry-run引数なしでコマンドを実行してみます。実際にはコマンドは実行されませんが、何が変更されるかを示します。
Torsten Ojaperv

19

@tzacksが注記しているように...これに便利なnpmパッケージがあります。ただやる:

npx git-removed-branches --prune

(私はコメントしたでしょうが、十分な評判はありませんでした)


1
ゴージャス。面倒は一切ありません。これは完全な回答でした。
Dan Rayson

1
これが一番上になるはずです。Windowsでも動作します。
tomtastico

14

WindowsとPowershellを使用している場合、以下を使用して、現在チェックアウトされているブランチにマージされているすべてのローカルブランチを削除できます。

git branch --merged | ? {$_[0] -ne '*'} | % {$_.trim()} | % {git branch -d $_}

説明

  • 現在のブランチとそれにマージされたブランチをリストします
  • 現在のブランチを除外します
  • git残りの各ブランチ名の出力から先頭または末尾のスペースをクリーンアップします
  • マージされたローカルブランチを削除します

git branch --merged最初に単独で実行するのは、それが期待するものだけを削除することを確認するだけです。

http://railsware.com/blog/2014/08/11/git-housekeeping-tutorial-clean-up-outdated-branches-in-local-and-remote-repositories/から移植/自動化されています。)


10

さらに短く安全なワンライナー:

git branch -d $(git branch --merged | cut -c 3- | grep -v master)

実行する前に、まだマージされていないブランチにチェックアウトしてください。現在チェックインしているブランチは削除できないためです。


3
これはあなたの「マスター」も削除しますか?
dcsan 2016

2
現在マスターにチェックインしている場合は、いいえ、そうでない場合はそうです
FelikZ

1
そのように、grepすると逆を選択するためにあなただけのパイプでしマスターをスキップするには- git branch -d $(git branch --merged | cut -c 3- | grep -v master)
mozillalives

これは安全ではなく、将来誰かが無意識のうちに自分のマスターブランチを削除するでしょう
jasonseminara '20

1
@jasonseminara #dcsanスニペットを更新したので、masterブランチをスキップします。#mozillalives感謝
FelikZ

9

originリモートブランチが削除された(gone)で、リモートブランチを追跡しているすべてのローカルブランチをパージするものが必要でした。リモートブランチを追跡するように設定されていないローカルブランチ(つまり、私のローカル開発ブランチ)を削除したくありませんでした。また、gitカスタムスクリプトを作成するのではなく、やその他のシンプルなCLIツールを使用するシンプルなワンライナーが欲しかった。私は少しを使用して終了grepし、awkこの単純なコマンドを作るために、その後、私の中の別名としてこれを追加しました~/.gitconfig

[alias]
  prune-branches = !git remote prune origin && git branch -vv | grep ': gone]' | awk '{print $1}' | xargs -r git branch -D

これは、git config --global ...これをgit prune-branches次のように簡単に追加するためのコマンドです。

git config --global alias.prune-branches '!git remote prune origin && git branch -vv | grep '"'"': gone]'"'"' | awk '"'"'{print $1}'"'"' | xargs -r git branch -d'

注:-Dへのフラグの使用はgit branch非常に危険な場合があります。したがって、上のconfigコマンドでは、-dオプションでgit branchはなくを使用しています-D。私-Dは実際の設定で使用します。私は-D、Gitがマージされていないブランチについて不平を言うのを聞きたくないので使用します。この機能も必要になる場合があります。その場合は、configコマンドの最後にでは-Dなく、単にを使用-dしてください。


8

リモートブランチを削除するには:

$git remote prune origin

すでにマージされているローカルブランチを削除するには:

$git branch -D $(git branch --merged)

私のために働く。ありがとう。
AndroidRuntimeException

2
(git branch --merged)も「master」を返します。そして、リモートで削除されていない他のブランチ。
トムG

8
これは私のマスターブランチを削除しました。
Greg、

5

安全なワンライナーではないようですが、エッジケースが多すぎます(名前の一部に「マスター」があるブランチなど)。最も安全なのは次の手順です。

  1. git branch -vv | grep 'gone]' > stale_branches.txt
  2. ファイルを表示し、保持したいブランチ(マスターブランチなど)の行を削除します。行の内容を編集する必要はありません
  3. awk '{print $1}' stale_branches.txt | xargs git branch -d

5

上記の回答に基づいて、私はこの短いワンライナーを使用しています:

git remote prune origin | awk 'BEGIN{FS="origin/"};/pruned/{print $2}' | xargs -r git branch -d

また、すでに剪定していて、ローカルのぶら下がりブランチがある場合は、これでクリーンアップされます。

git branch -vv | awk '/^ .*gone/{print $1}' | xargs -r git branch -d

1
ブランチ名にaが含ま/れている場合は機能しません
theicfire

4

一度にそれを行う方法はわかりませんが、git git branch -d <branchname>は完全にマージされた場合にのみローカルブランチを削除します。小文字のdに注意してください。

git branch -D <branchname> (大文字のDに注意)は、マージされたステータスに関係なく、ローカルブランチを削除します。


Windowsでは、他の回答はうまくいきませんでした。単純な-Dスイッチでこの回答を使用すると(ブランチがすでに「削除」されていたとしても)実行されました。

すべてのブランチに対して一度にそれを行うことができますか?
Teoman Shipahi 2017年

3

次のコマンドを使用できます。

git branch --merged master | grep -v "\* master" | xargs -n 1 git branch -d

Git Clean:コマンドの分解を含む、すでにマージされたブランチ削除します


ブランチを除外する必要はありません(マスターなど)。あなたのローカルコピーを削除しますが、「gitのチェックアウトDEV」だろうただの手段が存在し、すでにリモートからローカルブランチを作成する場合しないことにし、「合併」だ場合
csga5000

しかし、ローカルのブランチリストは、たとえそれらがマージされたとしても、まだそこにあります。このコマンドは、リモートから削除されたこれらのブランチを削除するためのものです。
sendon1982 '25

先頭のアスタリスクは現在のブランチを意味し、別のブランチでそのコマンドを実行するとうまく機能しません
OzzyCzech

2

上記の回答に基づいて、私はこの1行の解決策を思いつきました:

git remote prune origin; git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d

2

@wisbuckyの回答のバリアントを使用して、次のコードをエイリアスとして~/.gitconfigファイルに追加しました。

pruneitgood = "!f() { \
    git remote prune origin; \
    git branch -vv | perl -nae 'system(qw(git branch -d), $F[0]) if $F[3] eq q{gone]}'; \
}; f"

これにより、シンプルなものgit pruneitgoodは、マージ後に不要になったローカルブランチとリモートブランチの両方をクリーンアップします。


2

のPowershellバージョン git branch --merged master | grep -v '^[ *]*master$' | xargs git branch -d

git branch --merged master | %{ if($_ -notmatch '\*.*master'){ git branch -d "$($_.Trim())" }}

これにより、マスターブランチにいる間、マスターにマージされたローカルブランチがすべて削除されます

git checkout master 切り替える。


1

シュライスのバリアントは私にはうまくいきません(Ubuntu 12.04)ので、私の(クリアで光沢のある:)バリアントを提案しましょう

バリエーション1(このオプションをお勧めします):

git for-each-ref --format='%(refname:short) %(upstream)' refs/heads/ | awk '$2 !~/^refs\/remotes/' | xargs git branch -D 

バリエーション2:

a。予行演習:

comm -23 <( git branch | grep -v "/" | grep -v "*" | sort ) <( git br -r | awk -F '/' '{print $2}' | sort ) | awk '{print "git branch -D " $1}'

b。ブランチを削除:

comm -23 <( git branch | grep -v "/" | grep -v "*" | sort ) <( git br -r | awk -F '/' '{print $2}' | sort ) | xargs git branch -D

1

以下は、@ wisbuckyの回答をWindowsユーザーに適用したものです。

for /f "tokens=1" %i in ('git branch -vv ^| findstr ": gone]"') DO git branch %i -d

私はposh-gitを使用していますが、残念ながらPSはネイキッドをfor好みません。そのため、PruneOrphanBranches.cmdという名前のプレーンな 'olコマンドスクリプトを作成しました。

@ECHO OFF
for /f "tokens=1" %%i in ('git branch -vv ^| findstr ": gone]"') DO CALL :ProcessBranch %%i %1

GOTO :EOF

:ProcessBranch
IF /I "%2%"=="-d" (
    git branch %1 %2
) ELSE (
    CALL :OutputMessage %1
)
GOTO :EOF

:OutputMessage
ECHO Will delete branch [%1] 
GOTO :EOF

:EOF

パラメータを指定せずに呼び出してリストを表示し、「-d」を付けて実際の削除を実行するか、完全にマージされていないがとにかく削除したいブランチに対して「-D」を付けて呼び出します。


これは私にはうまくいきませんでした。どういうわけか、:または: (スペースあり)がfindstr毎回すべてに一致するようになりました-マスターをほとんど削除しました。しかし、正規表現を使用すると、うまく働いた:git branch -vv ^| findstr /R " \[origin/[0-9]+: gone\] "
ジョシュ

1

git bashでこれを試して、削除されたブランチへの参照をフェッチおよびプルーニングしてから、削除されたブランチを追跡していたローカルブランチをプルーニングします。

git fetch -p && git branch -d `git branch -vv | grep ': gone]' | awk '{print $1}' | xargs`

削除されないブランチを最初にチェックアウトすることを忘れないでください。そうすることで、ブランチの削除がブロックされることはありません。


0

受け入れられた答えを堅牢なスクリプトに変えました。あなたはそれを私のgit-extensionsリポジトリで見つけることができます

$ git-prune --help
Remove old local branches that do not exist in <remote> any more.
With --test, only print which local branches would be deleted.
Usage: git-prune [-t|--test|-f|--force] <remote>

0

「上流のブランチがなくなったローカルでチェックアウトされたブランチを削除するにはどうすればよいですか」の回答を求めて、このページに到達しました

マージされていないgit branch -dローカルブランチを削除する代わりにパイピングが警告するだけなので、ローカルブランチがまだマージされているかどうかも気にしませんでした。

git branch -a | grep origin | tr -s ' ' | cut -d '/' -f3 | egrep -v -f /dev/fd/0 <(git branch -a | grep -v origin) | grep branch_prefix_that_I_care_about | xargs git branch -d

# translation
# git branch -a | grep origin | tr -s ' ' | cut -d '/' -f3
## this finds all remote branch names minus the "remote/origin/" part
#
# <(git branch -a | grep -v origin)
## this finds all local branch names and redirects it into the previous command
#
# egrep -v -f /dev/fd/0 STUFF
## this is doing some weird magic that I'm grokking as "take the set difference from whatever was piped in"
#
#
# overall translation: (STUFF TO CONSIDER) | egrep magic <(STUFF TO REMOVE FROM CONSIDERATION) | do cool things with resulting stuff


0

これが私の解決策です:

git fetch -p
git branch -vv | grep ": gone" | awk '{print $1}' | xargs git branch -d
  • -pは、リモートに存在しなくなったリモート追跡参照を削除します。したがって、最初のステップでは、リモートブランチへの参照を削除します。

  • -vvは、sha1を表示し、上流のブランチ(存在する場合)との関係とともに各ヘッドの件名をコミットします。2番目のステップはすべてのローカルブランチを取得し、grepコマンドは削除されたブランチを除外します。


さらに小さい(別のコメントで説明)git branch -vv | awk '/: gone]/{print $1}' | xargs git branch -d
mrroboaat


-3

私はそれgit remote prune originがあなたが望むものだと確信しています。

あなたはそれを実行することができgit remote prune origin --dry-run、それが何を見てしまう何も変更せずに行います。


12
これは実際にはローカルブランチ自体を削除しません。
タイタイ2014年

-16

GUIを使用していますか?手動の手順ですが、すばやく簡単です。

$ git gui

「ブランチ->削除」を選択します。Ctrlキーを押しながらクリック(ウィンドウ)して複数のブランチを選択し、それらをすべて削除できます。


この回答がいかに否定的に認識されているかはおかしいです。GUIが好きなら、IMOは完全に有効なアプローチです。
serraosays
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.