search
LoginSignup
39

More than 5 years have passed since last update.

posted at

updated at

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 :{ブランチ名}

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
39