症状

GitHubやGitLabのリモートブランチを削除したいが、方法がわからない・削除できない

結論:まずこれを確認

  1. git branch -r でリモートブランチ一覧を確認する
  2. git push origin --delete ブランチ名 で削除する
  3. 削除権限があるか確認する(protectedブランチは削除不可)

操作フロー

    flowchart TD
    A[リモートブランチを削除したい] --> B{削除対象のブランチ名を確認した?}
    B -->|No| C[git branch -r で一覧確認]
    B -->|Yes| D{protectedブランチ?}
    C --> D
    D -->|Yes| E[GitHub/GitLab設定で解除が必要]
    D -->|No| F[git push origin --delete ブランチ名]
    F --> G{エラー発生?}
    G -->|No| H[削除完了]
    G -->|Yes| I{エラー内容を確認}
    I -->|permission denied| J[権限を確認]
    I -->|remote ref does not exist| K[ブランチ名を再確認]
    I -->|その他| L[解決しない場合へ]
  

よくある原因

  • ブランチ名のタイプミス - リモートブランチ名を正確に指定していない
  • protectedブランチに指定されている - GitHub/GitLab側の設定で削除が禁止されている
  • 権限不足 - リポジトリへの書き込み権限がない
  • すでに削除済み - ローカルの参照が古く、リモートには存在しない
  • デフォルトブランチを削除しようとしている - main/masterは別のブランチに変更後でないと削除できない
  • ネットワークエラー - リモートへの接続に失敗している

操作手順

ステップ1: リモートブランチの一覧を確認する

    git branch -r
  

🔍 チェックポイント: origin/ブランチ名 の形式で削除対象が表示されていることを確認する

出力例:

      origin/HEAD -> origin/main
  origin/feature/login
  origin/feature/payment
  origin/main
  

ステップ2: ローカルのリモート追跡情報を最新化する

    git fetch --prune
  

🔍 チェックポイント: リモートで削除済みのブランチがローカルの参照から消える

ステップ3: リモートブランチを削除する

    git push origin --delete ブランチ名
  

具体例:

    git push origin --delete feature/login
  

🔍 チェックポイント: - [deleted] feature/login のようなメッセージが表示されれば成功

別の書き方(同じ動作):

    git push origin :ブランチ名
  

ステップ4: 削除を確認する

    git branch -r
  

🔍 チェックポイント: 削除したブランチが一覧に表示されないことを確認する

ステップ5: ローカルブランチも削除する場合

リモートを削除しても、ローカルブランチは残る。必要に応じて削除する:

    git branch -d ブランチ名
  

マージされていないブランチを強制削除する場合:

    git branch -D ブランチ名
  

⚠️ 警告: -D(大文字)はマージ状態を確認せず強制削除する。作業内容が失われる可能性がある。

NG行動

  • 確認せずにブランチを削除する - 他のメンバーが使用中の可能性がある
  • mainやmasterを削除しようとする - デフォルトブランチは先に変更が必要
  • protectedを外さずに削除を試みる - 何度やってもエラーになる
  • ローカルブランチ名で削除コマンドを打つ - origin/は付けない、ブランチ名のみ指定する

よくある質問(FAQ)

Q1: error: unable to delete 'branch': remote ref does not exist と表示される

A: リモートにそのブランチが存在しない。git fetch --prune でローカルの参照を更新してから git branch -r で再確認する。

Q2: 複数のリモートブランチを一度に削除できる?

A: 可能。スペース区切りで複数指定する:

    git push origin --delete branch1 branch2 branch3
  

Q3: 削除したリモートブランチを復元できる?

A: コミットが残っていれば可能。削除前のコミットハッシュがわかれば、そこから新しくブランチを作成してプッシュする:

    git push origin コミットハッシュ:refs/heads/ブランチ名
  

関連するトラブル

準備中

解決しない場合