🚀

リモートブランチを一括で削除する

2022/12/14に公開

リモートブランチを大掃除したいのですが、一括で削除する方法がすぐに出てこなかったので、
メモとして残しておきたいと思います。

リモートブランチを一括で削除する方法

下記のスクリプトで、mainとstagingとdevelop以外のリモートブランチを一括で削除します。

git branch --remote | \
grep -v -e master -e main -e staging -e develop  | \
sed -e 's% *origin/%%' | \
xargs -I% git push --delete origin %

他にも除外したいブランチがあれば、 -e ブランチ名 で繋げていけば良いです!
例えばmain、staging、developブランチに加えて、ブランチA、ブランチBも削除したくない場合は、

git branch --remote | \
grep -v -e master -e main -e staging -e develop -e ブランチA -e ブランチB  | \
sed -e 's% *origin/%%' | \
xargs -I% git push --delete origin %

という風につなげていきます。

リモートブランチのマージ済みのブランチを一括で削除する方法

こちらもmainとstagingとdevelopを除外しています。

git branch --remote --merged main | \
grep -v -e main -e staging -e develop | \
sed -e 's% *origin/%%' | \
xargs -I% git push --delete origin %

こちらも同様に、 -e ブランチ名 でつなげていけば、特定のブランチを削除しないように指定できます。

以上の方法で、リモートブランチの削除を行うことができます。

リモートで削除されたブランチを、ローカルでも削除したい

リモートで削除されたブランチをローカルでも削除したい場合は、

git pull --prune

で行うことができます。

以上で、リモートブランチとローカルブランチの大掃除をすることができますので、
皆さんもぜひ試してみてください!

Discussion