[Git] ブランチを削除する

単にブランチを削除すると言っても「ローカル」「リモート」のどちらを対象とするかで、操作方法が変わってきます。現在のブランチが以下の状態だとして、ここでは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).

参考