Gitのリモートブランチとローカルブランチの削除方法
概要
Gitでブランチで作業を行い,作業が完了して本体にマージされたら,リモートリポジトリーのブランチ (リモートブランチ) とローカルブランチの両方を削除する。
頻出の作業なので手順を残す。基本的に以下のコマンドで行う。
git push -d <remote-repository> <branch-name>
git branch -D <branch-name>
具体的には,<remote-repository>=origin
,<branch-name>=topic
とすると,以下のコマンドになる。
git push -d origin topic
git branch -D topic
それぞれのコマンドの意味を説明する。
リモートブランチの削除: git push -d origin <branch-name>
まず,以下のコマンドでgit push
によりリモートリポジトリーのブランチを削除している。
git push -d <remote-repository> <branch-name>
git push -d origin topic
git push <remote-repository> :<branch-name>
git push origin :topic
リモートリポジトリーの削除はrefspecを用いた方法と-d/--delete
オプションを用いる方法の2種類の方法がある。
オプションを使用する場合は単純で,-d/--delete
の後に削除対象のリモートリポジトリーとブランチ名を指定すればいい。
リモートリポジトリーとローカルリポジトリーの対応関係の書式であるrefspecを用いた指定を行っている。refspecについては「Gitのデフォルト参照 (refs) – senooken.jp」でも説明している。
refspecでは,コロン (:
) を挟んで,左がローカルリポジトリーの参照,右がリモートリポジトリーの参照の対応関係を示している。
従って,今回の場合「空:リモートリポジトリーの参照」を指定しており,リモートリポジトリーのtopic
の参照先を空にする=リモートブランチのtopic
を削除するという意味になる。
なお,今回のようにgit push
でrefspecを指定する場合,コマンドの構文上リモートリポジトリー名 (例: origin
) を省略できないので注意する。多くの場合,デフォルトのリモートブランチ名のoriginで問題ないが,複数のリモートリポジトリーを取り扱う場合は,リモートリポジトリー名に注意する。
利用可能なリモートリポジトリーとURLはgit remote -v
コマンドで確認できる。
refspecを用いた削除は少々覚えにくいので,後述のブランチの削除オプションと同じ-d/--delete
を使うのがよいだろう。
ローカルブランチの削除: git branch -D <branch-name>
リモートブランチを削除したら,最後にローカルブランチを削除する。
こちらは,以下のようにgit branch
に-D
オプションで削除対象ブランチを指定して実行する。
git branch -D <branch-name>
git branch -D topic
-D
は--delete --force/-df
の省略オプションとなっている。
元々存在する削除オプションの-d/--delete
はブランチがマージされていない場合に警告を出してブランチを削除しない。強制的に削除するために-f/--force
オプションが必要になる。そのため,-D
で-df
相当のオプションを指定して削除するのが確実だ。
なお,現在のブランチを削除しようとすると以下のエラーが出て削除できない。
git checkout -b delete-example
git branch -D delete-example
error: Cannot delete branch 'delete-example' checked out at '/home/senooken/project/git-example'
そのため,事前にgit checkout
で別のブランチに切り空けてから削除する必要がある。
結論
Gitでのリモートブランチとローカルブランチの削除方法を整理した。
実際の開発作業では,ブランチで特定機能の作業を行い,本体ブランチにマージしたら作業ブランチは削除することが多い。
今回整理した手順で,本体にマージしたら,リモートブランチとローカルブランチを削除して,余計な一時ブランチを残さないようにして,整理整頓を心がけたい。
“Gitのリモートブランチとローカルブランチの削除方法” に対して2件のコメントがあります。