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

Updated:

たまにしか実行しない手順は、次にやる時にはやり方を忘れてしまっていて調べ直したりするので、無駄を省くために書き残しておきましょう。

というわけで、まずはGitでリモートブランチを削除する方法です。

リモートブランチを削除するには、pushコマンドを使います。例えばoriginリポジトリのworkブランチを削除するには、次のようにします。

$ git push origin :work

なぜこのgit pushでリモートブランチが削除されるかを説明します。git pushコマンドには次のようにパラメータを与えます。

$ git push <repository> <refspec>

ここで、普通の使い方では、<refspec>部分に対象となるブランチ名を指定します。例えば、workと書けば、ローカルブランチworkがリモートブランチにプッシュされるわけです。

しかし、正式には、<refspec>には「<src>:<dest>」という指定を行うことになっています。<src>にはローカルブランチ(実際には、任意のハッシュ値やHEAD~のような記法も使えます)、<dest>にはリモートブランチを指定します。

ですから、originリポジトリにworkブランチをプッシュする場合には、正式な書き方では次のようになります。

$ git push origin work:work

ただし、ローカルプランチとリモートブランチの名前が同じ場合には、次のように略して書けることになっています。これは普通のgit pushの書き方ですね。

$ git push origin work

さて、<refspec>に「:work」を指定するとどうなるでしょうか。これは、「空のローカルブランチ」をリモートブランチworkにプッシュするという意味になります。つまりリモートブランチworkを削除することになるのです。

もっとも、リポジトリをGitHubやGitLabに置いていれば、GUIで簡単にブランチを削除できてしまいますけどね。