gitでremoteで削除さらたブランチをローカルでも削除する方法
gitを使う場合、githubのプルリクを利用する人も多いかと思います。 プルリク&マージしたあと、リモートには存在しないブランチがローカルで残り続けることになります。
このままだと開発しにくいし、「どのブランチで作業してたっけ?」と混乱する原因にもなります。 そういう場合は、remoteに合わせてローカルのブランチも削除しましょう
結論から言うと、下記のコマンドを実行することで、一括削除することができます
$ git fetch --prune && git branch --merged | grep -vE '^\*|master$|develop$' | xargs -I % git branch -d %
%
は誤記じゃありません。ちゃんと含めてね
remoteに合わせてブランチを消すには2つの手順が必要
- 削除されたリモートブランチであることをローカルに認識させる
- remoteで削除されたブランチを削除する
削除されたリモートブランチであることをローカルに認識させる
削除されたブランチは、通常のgit pull
やgit fetch
では
「remoteで削除された」という情報をローカルに持ってくることができません。1
なので、これらの情報持ってくるために、次のコマンドを実行します。
$ git fetch --prune
コレで、「remotes/origin/*」がローカルに反映されます。
remoteで削除されたブランチを削除する
「remotes/origin/*」でremoteが削除されたブランチであることがわかります。 それを実際に確認するには下記のコマンドを実行します。
git branch --merged
あとは、コレで表示されたブランチを削除しましょう。
まとめ
下記のコマンドを実行すれば、remoteのブランチに合わせることができます。
$ git fetch --prune && git branch --merged | grep -vE '^\*|master$|develop$' | xargs -I % git branch -d %
リモートで削除されたブランチをローカルで反映させるには、結構面倒です。
-
正確には、「remotes/origin/*」の情報がローカルに降りてきません↩