開発ブログ

WWWクリエイターズが送る、Git、CSS、HTML、コマンドライン、Macの便利機能など、開発に関する役立ち情報発信します。気まぐれに更新。

Gitでブランチを削除する方法、徹底まとめ。

最終更新:2017-08-18 by Joe

Git でのブランチの削除に関するコマンドと解説です。

ローカルブランチは「git branch -d」というおおよそ直感的なコマンドで削除できます。一方で、リモートブランチは・・、?となる初学者は非常に多いと思います。

リモートブランチや、リモート追跡ブランチもちゃんと削除しないとどんどん溜まってしまいます。これらを整理するための方法をまとめます。

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

ローカルブランチの削除コマンドから。

実際、ローカルブランチの整理では、マージされていないブランチを削除しようとして、しょっちゅう怒られてしまいます。

そんなときは、「-D」オプションを使って、強制的に削除します。これは、--forceのショートハンドというわけですね。なるほど。

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

リモートブランチの削除コマンドです。

ポイントはpushコマンドを使う点です。1つ目は明示的にdeleteをオプションで追加します。

2つめの意味がややわかりにくいですが、git pushコマンドには <local branch>:<remote branch>というコロンで区切るオプションが存在します。

上記の削除コマンドでは、<空文字>:<remote branch>という表現で「何もない」をプッシュすることで、「削除する」コマンドという解釈になるようです。

この:<remote branch>というのはオプショナルで、指定しない時(通常は指定しないことが多いと思います)の振る舞いは<local branch>と同じ名前のリモートブランチ名がプッシュの対象になるようです。

と、マニュアルに書いていますので、気になる方は直接ご参照下さい:

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

上述のリモートブランチ削除操作によって、自分が作成したリモート追跡は同時に削除されます。

一方で、チームの他のメンバーがリモートを

リモートとローカルのブランチを削除しても、リモート追跡トラッキング(=追跡)ブランチはしっかりと残ってしまいます。特に、チームの他の誰かがリモートブランチを削除した、などのケースでも、ほっておいてもあなたのローカルにあるリモート追跡ブランチは残ったままです。

リモート追跡ブランチも、ちゃんと削除するコマンドが用意されてます。

「-r」は「--remotes」のショートハンドですね。リモートを消したら普通リモート追跡もいらない事がほとんどなので、こちらも忘れずに削除しておきましょう。

削除したブランチを復活させる

まちがって削除しても、ローカルブランチであれば、git branch コマンドを利用して元に戻せます。

--prune オプションを用いた追跡ブランチ削除

リモートとの関連のあるgit コマンドの多くは、「--prune」と呼ばれるオプションを持っています。これらは、ローカルのブランチと、リモートのブランチとの差分をみて、リモートのブランチ有無とローカルのそれの整合を取るような動きをします。

このオプションを用いて、ブランチを削除することもできます。

git fetch 時に、不要なリモート追跡ブランチを削除する

fetch に--pruneを追加した例です。リモート→リモート追跡 のシンクさせる意味で、使い勝手のよいコマンドです。リモートレポジトリで(下記では、origin で)もしすでに削除されているブランチがあれば、対応する追跡ブランチを削除してくれます。

参考リンク

Gitマニュアルは、なんでも書いてありますね。オプションを探すのがちょっと大変ですが。

さて、以上になります。

うまくブランチを削除できたでしょうか?それでは、快適なgitライフを。