どーも!
たかぽんです!
今回は開発を進めているとどんどん溜まっていくローカルのブランチ達を綺麗にする方法を調べてみました!
本当はリモートでマージするたびに消すべきなんでしょうけどね...w
以下のbranchが有る状況を想定します。
$git branch
master
hoge
huga
mergedhoge
mergedhuga
hogeとhugaは未マージ、merged...はマージ済です。
目次
ひとつずつローカルのブランチを削除する方法
まずは最初に消したいブランチを指定して削除する方法です。
マージ済の場合
すでにpushしたものに対しては以下で削除が可能です。
git branch --delete hoge
これでhogeブランチが削除できます。
未マージの場合
マージをし終えていない場合、先ほどのコマンドでは警告が出てきて削除ができません。
代わりに、マージしてないけど消していいよ〜って指定する必要があります。
コマンドは以下のような形です。
git branch -D mergedhoge
-deleteの代わりに-Dを使います。
一つずつの削除の場合
一つずつ削除するのであれば、--deleteでやって、警告が出たら-Dでやるといった方法が一番安全だと思います。
特に作業を終えて、レビューを待っている状態のものなどを削除してしまうのはつらいですからね...
一気に削除!
さて、僕はとても怠惰なので、数十個溜まり、branch一覧がターミナルをはみ出てから、あ〜掃除するかぁ...となるタイプです。
そんな僕にとって、一個づつ削除するのは苦行です。いやです。
そこで、一気に削除する方法を調べてみました。
merge済のものを一気に削除
まずは最初にmerge済のブランチを一気に削除する方法です。
以下のコマンドで可能になっています。
git branch --merged|egrep -v '\*|develop|master'|xargs git branch -d
簡単に説明します。
まず、"git branch --merged"コマンドにてマージ済のブランチを取得し、それに対してegrepでdevelop, masterを除いたものを取得します。
最後に、それらに対してxargsを使って、"git branch -d"の引数に渡して削除を行います。
上記コマンドを実行することで、develop, masterを除いた未マージのブランチを全て削除することができます。
未mergeも含めて全て削除
さて、では未マージもちょっと変更すれば可能ですね。
git branch |egrep -v '\*|develop|master'|xargs git branch -D
最初にgit branchで全てのブランチを取得、developとmasterを除き、最後に-Dで削除するようにすればOKです。
ただし、未マージのものも削除されるので、ちゃんと確認してから行いましょう。
まとめ
今回はずぼらな僕にとっておきのブランチ一括削除の方法を調べました。
できるだけこういう無駄な時間を減らしていきたいですよね!
実は今までずっとコピペでちまちま一つづつやってたので、大助かりですよ!ほんと!
皆さんも是非使ってみてくださいね!
それでわ!