このブランチはもう必要ないから削除したいな
今回はGit開発でよく利用される必要のなくなったブランチの削除方法を下記の3つの用途に合わせてご紹介していきます。
- ローカルブランチの削除
- リモートブランチの削除
- ブランチを強制的に削除する
各種オプションについても解説いたしますのでぜひご覧ください。
ローカルブランチを削除する
まず現在のブランチの状態を確認します。
ローカルブランチを確認するにはgit branchコマンドを利用します。
コマンドの出力結果から現在いるブランチが先頭に(*)マークのついているfooです。今回はこのfooブランチを削除していきます。
$ git branch
develop
main
* foo
ブランチを削除するには-dオプションを使用します。オプションを記述したら半角スペースを空けて削除したいブランチ名を指定します。
書式
git branch -d ブランチ名
※オプション-dはdeleteの略
削除対象のブランチがマージ済みであれば問題なく削除することができますが、マージできていないブランチを削除しようとするとエラーが表示され削除することができません。
マージしていないブランチを削除したい場合には後述する強制削除の方法を参照してください。
ブランチ削除の流れ
それでは実際に-dオプションを利用してfooブランチを削除してみます。再度、git branchコマンドで現在のローカルブランチの状態を確認します。
$ git branch
develop
main
* foo
今いる作業ブランチはfooブランチであることがわかりますが、現在の作業ブランチはそのまま削除することができません。
一旦別のブランチに避難してからコマンドを実行しましょう。とりあえず、お隣のmainブランチに移動します。
$ git checkout main
Switched to branch 'main'
現在の作業ブランチがmainとなっているかを確認します。
$ git branch
develop
* main
foo
無事にmainブランチに退避できました。
それではfooブランチを削除していきます。
$ git branch -d foo
Deleted branch foo (was 32fa5ab).
コマンドの実行結果からfooブランチを削除していることがわかりますが、一応ローカルブランチを確認してみましょう。
$ git branch
develop
* main
上記の結果からfooブランチがローカルから削除されていることがわかります。
小文字の-dオプションはmainブランチにマージされていない変更が残っている場合は削除しないようになっているので、マージするのをうっかり忘れて削除しようとした場合にはエラーを出してくれます。
ブランチを強制的に削除する
マージやリモートにプッシュしていないけどもう必要がないためブランチを削除したいときに使用する強制的にローカルブランチを削除する方法について紹介していきます。
書式
git branch -D ブランチ名
git branch -D foo
Deleted branch foo (was c0a3c01).
大文字の-Dオプションは強制的にローカルブランチを削除するオプションです。間違いのないように注意してから削除しましょう。
リモートブランチを削除する
まず現在のブランチの状態を確認します。
リモートブランチを確認するにはgit branchコマンドと-aまたは-rオプションを利用します。
コマンドの出力結果から現在いるブランチが先頭に(*)マークのついているmainです。今回削除したいリモートブランチは”remotes/origin/foo”ブランチです。
$ git branch -a
develop
* main
remotes/origin/develop
remotes/origin/main
remotes/origin/foo
リモートブランチを削除するには–deleteオプションを使用します。
オプションを記述したら半角スペースを空けてoriginと記述し、さらに半角スペースを空けて削除したいブランチ名を指定します。
書式
git push –delete origin ブランチ名
他にもブランチを削除するコマンドはありますが、覚えやすいpushを利用したブランチ削除方法について説明していきます。
ブランチ削除の流れ
それでは実際に-deleteオプションを利用して”remotes/origin/foo”ブランチを削除してみます。再度、git branchコマンドで現在のリモートブランチの状態を確認します。
$ git branch -a
develop
* main
remotes/origin/develop
remotes/origin/main
remotes/origin/foo
それでは”remotes/origin/foo”ブランチを削除していきます。
よく誤解されますが、リモートブランチを削除する際にはデフォルトで設定される”remotes/origin/”の部分は記述する必要ありません。
ユーザー側で作成した階層などは必要ですが、基本的にはブランチ名のみで大丈夫です。
$ git push --delete origin foo
To https://github.com/〇〇〇〇/〇〇〇〇.git
- [deleted] foo
コマンドの実行結果からfooブランチを削除していることがわかりますが、一応リモートブランチを確認してみましょう。
$ git branch
develop
* main
remotes/origin/develop
remotes/origin/main
上記の結果からfooブランチがリモートから削除されていることがわかります。
よくあるエラー
ブランチを削除する際に出力されるよくあるエラーについて紹介していきます。
マージしていないブランチを削除しようとした
マージしていないブランチを削除しようとした場合に出力されるメッセージは以下の通りです。
error: The branch ‘foo’ is not fully merged.
If you are sure you want to delete it, run ‘git branch -D foo’.
出力内容としては
マージされてないブランチは削除できないよ?
どうしても削除したいなら‘git branch -D foo’を入力してよ!
という内容になります。
指示通りの削除コマンドを入力するようにしましょう。
現在の作業ブランチを削除しようとした
現在作業しているブランチを削除しようとした場合に出力されるメッセージは以下の通りです。
error: Cannot delete the branch 'foo' which you are currently on.
出力内容としては
現在の作業ブランチは削除できないよ!!
という内容になります。
別のブランチに移動してから削除するようにしましょう。ブランチの移動コマンドは下記記事を参考にしてください。