Git でリモートブランチを削除する (git push origin :xxx, git fetch --prune)

必要のないリモートブランチを削除(リモートサーバー側)

git branch -d コマンドを使ってローカルのブランチを削除しても、GitHub などに既に push されているブランチは削除されません(他のメンバーには、まだブランチが存在しているように見えます)。 GitHub 側のブランチを削除するには、ローカルブランチを削除するのとは別のコマンドを実行する必要があります。

まずは、リモートトラッキングブランチの一覧を確認しておきます。

$ git branch -r
  origin/HEAD -> origin/main
  origin/main
  origin/mybranch1
  origin/mybranch2
  origin/mybranch3

例えば、この中の mybranch2 を削除したい場合は、以下のようにして origin サーバに削除要求を送ります。 削除したいブランチの名前の前にコロン (:) を付けるのがポイントです。

$ git push origin :mybranch2

git push の 2 番目のパラメータで指定するリファレンス名は、<プッシュ元のブランチ名>:<プッシュ先のブランチ名> という形式を取りますが、このコロンの左側の部分を空にすることで、プッシュ先のブランチを削除する(空にする)という意味になります。

ローカル側のリモートトラッキングブランチを削除する

中央リポジトリ (GitHub) 側のブランチを削除しても、ローカルに作られているリモートトラッキングブランチは削除されません。 以下のように必要のないリモートトラッキングブランチを削除する必要があります。

# フェッチと同時に必要のないリモートトラッキングブランチを削除する(オススメ)
$ git fetch --prune

# 必要のないリモートトラッキングブランチを削除する
$ git remote prune origin

あるいは、以下のように指定したリモートトラッキングブランチを削除することもできます。

$ git branch -r -d origin/mybranch

前者の場合は、中央リポジトリ上から実際に削除されたブランチを、ローカルのリモートトラッキングブランチから削除します。 後者の場合は、中央リポジトリは関係なしに、指定したローカルのリモートトラッキングブランチを削除します。