Gitでmasterブランチにマージ済みのローカルブランチを一括削除する
はじめに
Gitでは容易にブランチを作成し、切り替えることができます。
ただ、容易にブランチを作成できるがゆえに、不要なブランチがわかりにくく、残ってしまうことがあります。
すでにmasterブランチにマージされているが、ローカルに残ってしまったブランチ を掃除するためのコマンドを紹介します。
※実行前には、実行結果を確認してください!自己責任でお願いします!
検証環境
$ uname -moi
x86_64 x86_64 GNU/Linux
$ bash -version | head -n 1
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
$ git --version
git version 1.8.3.1
masterブランチマージ済みのローカルブランチを削除
まずはローカルブランチを対象とした掃除の方法について。
git branch --merged master
コマンドでmasterブランチにマージ済みのローカルブランチを出力できます。
ここから カレントブランチ 、 masterブランチ 、 developブランチ を除外します。
最後に該当のブランチ名を git branch -d
で1つずつ削除していきます。
git branch --merged master \
| sed -n 's@^\s*@@p' \
| grep -v -e '^\*' -e '^\(master\|develop\)$' \
| xargs -n 1 git branch -d
masterブランチマージ済みのoriginリモートブランチを削除
すでにpush済みのリモートブランチを対象とした掃除の方法について。
今度は git branch --remotes --merged master
でマージ済みのリモートブランチを出力しますが、 origin ブランチ飲みに絞り込みます。
最後に git push --delete origin <branch_name>
コマンドで削除を行います。
git branch --remotes --merged master \
| sed 's@^\s*@@' \
| sed -n 's@^origin/@@p' \
| grep -v -e '^\*' -e '^\(master\|develop\)$' -e '^HEAD ' \
| xargs -n 1 git push --delete origin
masterブランチマージ済みのupstreamリモートブランチを削除
こちらは利用するケースは更に低いと思いますが、すでにpush済みのリモートブランチを対象とした掃除の方法について。
先程の origin の文字が upstream に置換されているだけです。
git branch --remotes --merged master \
| sed 's@^\s*@@' \
| sed -n 's@^upstream/@@p' \
| grep -v -e '^\*' -e '^\(master\|develop\)$' -e '^HEAD ' \
| xargs -n 1 git push --delete upstream
ひとこと
実行前には必ず、 xargs
コマンドで実行される git
コマンドが正しいかどうを確認するために xargs -n 1 echo git ...
のように書き直して実行してみてください。
ディスカッション
コメント一覧
まだ、コメントがありません