単にブランチを削除すると言っても「ローカル」「リモート」のどちらを対象とするかで、操作方法が変わってきます。現在のブランチが以下の状態だとして、ここではdevelop
ブランチをローカル、リモートともに削除してみます。
$ git branch -a
* develop
master
remotes/origin/develop
remotes/origin/master
ローカルのブランチを削除
git branch -d [ブランチ名]
で対象のブランチを削除します。以下では develop
という名前のブランチを削除しています。
$ git branch -d develop Deleted branch develop (was 9c45bea).
ブランチが正常に削除されたか、ブランチの一覧を表示し確認すると、ローカルからdevelop
ブランチが消えてなくなったのがわかります。
$ git branch -a
* master
remotes/origin/develop
remotes/origin/master
リモートのブランチを削除
通常、ローカルのブランチを削除したら、リモートの方も削除するケースの方が多いかと思います。リモートを削除するには git push origin :リモートブランチ名
とコマンドを叩きます。コロン(:)を忘れずに。
$ git push origin :develop To /home/katsube/Work/test.git - [deleted] develop
ブランチの一覧を見てみましょう。ここまででローカルとリモートの両方からブランチが消えてなくなったのが確認できたと思います。
$ git branch -a
* master
remotes/origin/master
トラブルシューティング
削除できない
自分自身が現在参照しているブランチは削除できません。以下のエラーが出る場合、他のブランチ(masterなど)にgit checkout
してから実行してください。
$ git branch -d develop error: Cannot delete the branch 'develop' which you are currently on. $ git checkout master Switched to branch 'master' Your branch is up-to-date with 'origin/master'. $ git branch -d develop Deleted branch develop (was 9c45bea).
マージが行われていないと警告が出る
mergeをしていない(HEADでない)状態で削除しようとすると警告が出ます。
$ git branch -d develop warning: deleting branch 'develop' that has been merged to 'refs/remotes/origin/develop', but not yet merged to HEAD. Deleted branch develop (was 25c2071).
意図したものなら問題ありませんが、気持ち悪い場合はgit branch -D [ブランチ名]
と大文字のDをオプションで指定することで問答無用で削除することもできます。
$ git branch -D develop Deleted branch develop (was 34dd422).