短い答え
次のコマンドの詳細な説明が必要な場合は、次のセクションの詳細な回答を参照してください。
リモートブランチを削除する
git push origin --delete <branch> # Git version 1.7.0 or newer
git push origin -d <branch> # Shorter version (Git 1.7.0 or newer)
git push origin :<branch> # Git versions older than 1.7.0
ローカルブランチを削除する
git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force-delete un-merged branches
ローカルのリモート追跡ブランチを削除する
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete remote-tracking branches
git fetch <remote> -p # Shorter
長い答え:削除するには、3つの異なるブランチがあります!
ローカルとリモートの両方でブランチを削除する場合は、3つの異なるブランチが関係していることに注意してください。
- ローカルブランチ
X
。
- リモートオリジンブランチ
X
。
- リモートブランチ
origin/X
を追跡するローカルリモート追跡ブランチX
。
使用された元のポスター:
git branch -rd origin/bugfix
これにより、ローカルのリモート追跡ブランチ のみが削除され、上のorigin/bugfix
実際のリモートブランチbugfix
は削除されませんでしたorigin
。
その実際のリモートブランチを削除するには、あなたは必要です
git push origin --delete bugfix
追加の詳細
次のセクションでは、リモートブランチとリモートトラッキングブランチを削除するときに考慮すべき追加の詳細について説明します。
リモートブランチを削除するようにプッシュすると、リモート追跡ブランチも削除されます
X
コマンドラインからa git push
を 使用してリモートブランチを削除すると、ローカルのリモートトラッキングブランチも削除されるorigin/X
ので、git fetch --prune
またはで古いリモートトラッキングブランチを削除する必要はありませんgit fetch -p
。ただし、とにかくそれはあなたを傷つけません。
次のコマンドを実行すると、リモート追跡ブランチorigin/X
も削除されたことを確認できます。
# View just remote-tracking branches
git branch --remotes
git branch -r
# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a
廃止されたローカルリモート追跡ブランチオリジン/ Xのプルーニング
X
コマンドラインからリモートブランチを削除しなかった場合(上記のように)、ローカルリポジトリには(廃止された)リモート追跡ブランチが含まれていorigin/X
ます。これは、たとえばGitHubのウェブインターフェースを介してリモートブランチを直接削除した場合に発生する可能性があります。
これらの廃止されたリモート追跡ブランチを削除する一般的な方法(Gitバージョン1.6.6以降)はgit fetch
、--prune
またはより短いで実行するだけ-p
です。これにより、リモートに存在しなくなったリモートブランチの古いリモートトラッキングブランチがすべて削除されることに注意してください。
git fetch origin --prune
git fetch origin -p # Shorter
1.6.6リリースノートからの関連する引用は次のとおりです(強調は私のものです)。
多くのリポジトリからフェッチを実行するための「git fetch」の学習--all
と--multiple
オプション、および--prune
古くなったリモート追跡ブランチを削除するオプション。 これらにより、「git remote update」と「git remote prune」の必要性が低くなります(ただし、「remote update」も「remote prune」も削除する予定はありません)。
廃止されたリモート追跡ブランチの上記の自動プルーニングの代替
また、代わりを通して、あなたの時代遅れのローカルリモート追跡の枝を剪定のgit fetch -p
、あなたは余分なネットワーク操作を避けることができますだけで、手動で(複数可)、分岐を除去することによって、--remote
または-r
フラグ:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
こちらもご覧ください