かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

git リモートのブランチを削除する

お仕事でエンジニアしてないと本当にどんどん忘れて言っててヤバイって感じてる今日このごろな訳です。

マージしたブランチの消し忘れとか不要なブランチが残ってると見通しが悪くなるのでリモートリポジトリのブランチは定期的に整理したい訳です。で、リモートのブランチを削除する方法。gitHubとかBitbucketとか使ってるとサービス上で削除できるのですが、まぁコマンドで削除する方法を。忘れてたので、メモしておきます。

リモートのブランチを削除する手順

$ git branch -a
* master
  release/20160229
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/release/20160229

こんな感じにブランチがあります。 release/20160229はmasterにマージしてリリースしたので削除したいと思います。

ローカルのブランチを削除する

まずローカルのブランチを削除する必要があります。

$ git branch -d release/20160229

リモートのブランチを削除する

$ git push origin :release/20160229

削除できているか確認する

$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

git push でリモートのブランチが消える理由

リモートのブランチにpushする時は通常下記のような感じにします。

git push origin foo

これは

git push origin foo:foo

が省略されたものです。
つまり、こんな感じのイメージです。

git push origin [ローカルのブランチ]:[リモートのブランチ]

なので、:ブランチ名でpushするとリモートのブランチが削除できるのは

git push origin []:[リモートのブランチ]

リモートのブランチに何もない空のブランチをpushするので、
リモートのブランチが「何もない空」になる => 削除される
って事みたいです。

理由を知っておけば覚えていられそうな気がしてきました!


[参考]

実用Git

実用Git