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/X
któ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ł bugfix
na 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 X
z 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 --prune
lub git fetch -p
. Jednak nie zaszkodzi, jeśli i tak to zrobisz.
Możesz sprawdzić, czy gałąź zdalnego śledzenia origin/X
ró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 X
z 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 fetch
z --prune
lub 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 --multiple
opcje, aby uruchomić pobieranie z wielu repozytoriów oraz --prune
opcję 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 --remote
lub -r
:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
Zobacz też