Git

Gitでブランチを削除しようとして怒られた時の対応方法

error: Cannot delete the branch 'ブランチ名' which you are currently on.

  • 原因 : カレントのブランチを削除しようとしている
  • 対応 : 削除対象外のブランチに切り替えてから削除する
ブランチを切り替えて削除する
$ git checkout {削除対象以外のブランチ}
$ git branch -d {削除対象のブランチ}

error: The branch 'ブランチ名' is not fully merged. If you are sure you want to delete it, run 'git branch -D ブランチ名'.

  • 原因 : マージされていないブランチを削除しようとしている
  • 対応 : マージして削除する or 強制的に削除する
強制的に削除する
$ git branch -D {ブランチ名}

error: branch 'ブランチ名' not found.

  • 原因 : ローカルにそんなブランチはない
  • 対応
    • (誤記)ブランチ名を見直す
    • (リモートにある)リモートを確認してリモートのブランチを削除する
リモートを確認してリモートのブランチを削除する
$ git branch -r | grep {ブランチ名}
  origin/{ブランチ名}
$ git push -d origin {ブランチ名}

fatal: --delete doesn't make sense without any refs

$ git push -d :feature/UBS_KENPO-6890
fatal: --delete doesn't make sense without any refs
  • 原因 : 引数の指定方法を誤っているから
    @k-takata さんに教えていただきました。

    git push origin :{ブランチ名} は git push -d origin {ブランチ名} が使えなかった頃の古いやり方です。push -d が使える環境であれば、:{ブランチ名} を使う必要はないでしょう。
    refs というのは、ブランチ名やタグ名などを指しています。
    git push -d {リポジトリ} {ブランチ名} と指定すべきところ、引数を1つしか指定しなかったため、{ブランチ名} が無いというエラーです。

  • 対応 : 書き方を変える

$ git push -d origin {ブランチ名}
Username for 'URL': {ユーザ名}
To {URL}.git
 - [deleted]         {ブランチ名}

warning: deleting branch 'ブランチ名' that has been merged to 'refs/remotes/origin/feature/ブランチ名', but not yet merged to HEAD.

  • 原因 : リモートに削除対象のブランチがある(この時点ではローカルしか削除されていない)
  • 対応 : 何もしない(ローカルだけ削除) or 削除をプッシュする(リモートも削除しちゃう)
削除をプッシュする
$ git push origin :{ブランチ名}