症状
GitHubやGitLabのリモートブランチを削除したいが、方法がわからない・削除できない
結論:まずこれを確認
git branch -rでリモートブランチ一覧を確認するgit push origin --delete ブランチ名で削除する- 削除権限があるか確認する(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/ブランチ名
関連するトラブル
準備中
解決しない場合
- Git公式ドキュメント: https://git-scm.com/docs/git-push
- GitHub Docs - ブランチの削除: https://docs.github.com/ja/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/deleting-and-restoring-branches-in-a-pull-request
- 確認すべきログ:
git remote -vでリモートURLを確認 - 次に調べるキーワード: 「GitHub protected branch 解除」「git permission denied push」