Te krótkie odpowiedzi
Jeśli chcesz uzyskać bardziej szczegółowe objaśnienia następujących poleceń, zapoznaj się z długimi odpowiedziami w następnej sekcji.
Usuwanie zdalnego oddziału
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
Usuwanie lokalnego oddziału
git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force-delete un-merged branches
Usuwanie lokalnego oddziału zdalnego śledzenia
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
Długa odpowiedź : istnieją trzy różne gałęzie do usunięcia!
Podczas usuwania oddziałów zarówno lokalnie, jak i zdalnie, należy pamiętać, że w grę wchodzą trzy różne oddziały :
- Lokalny oddział
X.
- Oddział zdalnego pochodzenia
X.
- Lokalna gałąź zdalnego śledzenia,
origin/Xktóra śledzi gałąź zdalną X.

Użyto oryginalnego plakatu:
git branch -rd origin/bugfix
Który tylko usunięte jego lokalny oddział zdalnego śledzenia origin/bugfix , a nie rzeczywista zdalny oddział bugfixna origin.

Aby usunąć tę rzeczywistą gałąź zdalną , potrzebujesz
git push origin --delete bugfix

Dodatkowe Szczegóły
W poniższych sekcjach opisano dodatkowe szczegóły, które należy wziąć pod uwagę podczas usuwania oddziałów zdalnego i zdalnego śledzenia.
Naciskanie w celu usunięcia zdalnych gałęzi powoduje również usunięcie zdalnych gałęzi
Zauważ, że usunięcie zdalnej gałęzi Xz wiersza poleceń za pomocą a git push spowoduje również usunięcie lokalnej gałęzi zdalnego śledzenia origin/X , więc nie jest konieczne przycinanie przestarzałej gałęzi zdalnego śledzenia za pomocą git fetch --prunelub git fetch -p. Jednak nie zaszkodzi, jeśli i tak to zrobisz.
Możesz sprawdzić, czy gałąź zdalnego śledzenia origin/Xrównież została usunięta, wykonując następujące czynności:
# 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
Przycinanie przestarzałego źródła lokalnego źródła zdalnego śledzenia / X
Jeśli nie usunąłeś swojej zdalnej gałęzi Xz wiersza poleceń (jak wyżej), twoje lokalne repozytorium nadal będzie zawierało (już nieaktualne) gałąź zdalnego śledzenia origin/X. Może się to zdarzyć, jeśli na przykład usuniesz zdalną gałąź bezpośrednio przez interfejs sieciowy GitHub.
Typowym sposobem na usunięcie tych przestarzałych gałęzi zdalnego śledzenia (od wersji Git 1.6.6) jest po prostu uruchomienie git fetchz --prunelub krótszym -p. Pamiętaj, że spowoduje to usunięcie wszystkich przestarzałych lokalnych gałęzi zdalnego śledzenia dla wszystkich gałęzi zdalnych, które już nie istnieją na pilocie :
git fetch origin --prune
git fetch origin -p # Shorter
Oto odpowiedni cytat z informacji o wersji 1.6.6 (moje wyróżnienie):
Wyuczono „git fetch” --all i --multipleopcje, aby uruchomić pobieranie z wielu repozytoriów oraz --pruneopcję usuwania zdalnych gałęzi śledzenia, które stały się nieaktualne. To sprawia, że „git remote update” i „git remote prune” są mniej potrzebne (nie planuje się jednak usuwania „remote update” ani „remote prune”).
Alternatywa dla powyższego automatycznego przycinania dla przestarzałych gałęzi zdalnego śledzenia
Alternatywnie, zamiast przycinać przestarzałe lokalne gałęzie zdalnego śledzenia git fetch -p, możesz uniknąć dodatkowych operacji sieciowych, po prostu ręcznie usuwając gałęzie za pomocą flag --remotelub -r:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
Zobacz też