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件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です