Czy istnieje prosty sposób usunięcia wszystkich gałęzi śledzenia, których zdalny odpowiednik już nie istnieje?
Przykład:
Oddziały (lokalne i zdalne)
- mistrz
- pochodzenie / mistrz
- origin / bug-fix-a
- origin / bug-fix-b
- origin / bug-fix-c
Lokalnie mam tylko oddział główny. Teraz muszę pracować nad poprawką błędów , więc sprawdzam ją, pracuję nad nią i wypycham zmiany do pilota. Następnie robię to samo z bug-fix-b .
Oddziały (lokalne i zdalne)
- mistrz
- bug-fix-a
- bug-fix-b
- pochodzenie / mistrz
- origin / bug-fix-a
- origin / bug-fix-b
- origin / bug-fix-c
Teraz mam master oddziałów lokalnych , bug-fix-a , bug-fix-b . Opiekun gałęzi Master scali moje zmiany w master i usunie wszystkie gałęzie, które już scalił.
Więc obecny stan jest teraz:
Oddziały (lokalne i zdalne)
- mistrz
- bug-fix-a
- bug-fix-b
- pochodzenie / mistrz
- origin / bug-fix-c
Teraz chciałbym wywołać jakieś polecenie w celu usunięcia gałęzi (w tym przypadku bug-fix-a , bug-fix-b ), które nie są już reprezentowane w zdalnym repozytorium.
Byłoby to coś w rodzaju istniejącego polecenia git remote prune origin
, ale bardziej podobne git local prune origin
.
źródło
* master
w moim systemie. Następujące polecenie działało dla mnie:git branch -d $(git branch --merged |tail -n +2)
develop
togit branch --merged
obejmujemaster
! Prawdopodobnie (zdecydowanie!) Nie chcesz tego usuwać. Myślę też, że powinno byćgit branch -d
tam, gdzie małe litery-d
oznaczają „bezpieczne usuwanie”, np. Usuwanie tylko w przypadku scalenia.git branch --merged | grep -v "master" >/tmp/merged-branches && vi /tmp/merged-branches && xargs git branch -d </tmp/merged-branches
Po poleceniu
usuwa zdalne odwołania po uruchomieniu
pokaże „zniknął” jako zdalny status. Na przykład,
Możesz więc napisać prosty skrypt, aby usunąć lokalne oddziały, które zostały zdalne:
Zauważ, że powyższe używa polecenia „porcelana”,
git branch
aby uzyskać status upstream.Innym sposobem uzyskania tego statusu jest użycie polecenia „instalacja wodno-kanalizacyjna”
git for-each-ref
ze zmienną interpolacyjną%(upstream:track)
,[gone]
podobnie jak powyżej.To podejście jest nieco bezpieczniejsze, ponieważ nie ma ryzyka przypadkowego dopasowania części komunikatu zatwierdzenia.
źródło
git branch -vv | gawk '{print $1,$4}' | grep 'gone]' | gawk '{print $1}'
awk '/: gone]/{if ($1!="*") print $1}'
. To działa teraz zgodnie z oczekiwaniami.test = "!git fetch -p && for branch in `git branch -vv | grep ': gone]' | awk '{print $1}'`; do git branch -D $branch; done"
Większość tych odpowiedzi w rzeczywistości nie odpowiada na pierwotne pytanie. Zrobiłem sporo kopania i to było najczystsze rozwiązanie, jakie znalazłem. Oto nieco dokładniejsza wersja tej odpowiedzi:
git checkout master
git fetch -p && git branch -vv | awk '/: gone]/{print $1}' | xargs git branch -d
Wyjaśnienie:
Działa poprzez przycinanie gałęzi śledzenia, a następnie usuwanie lokalnych, które pokazują, że już ich nie ma
git branch -vv
.Uwagi:
Jeśli Twój język jest ustawiony na inny niż angielski, musisz zmienić
gone
odpowiednie słowo. Oddziały, które są tylko lokalne, nie zostaną dotknięte. Oddziały, które zostały usunięte na odległość, ale nie zostały scalone, pokażą powiadomienie, ale nie zostaną usunięte na poziomie lokalnym. Jeśli chcesz je również usunąć, zmień-d
na-D
.źródło
git checkout master && ...
na początku polecenia.git branch -vv
zaczynają się od gwiazdki, która ostatecznie zakończy się wykonaniemgit branch -d *
. Otogit branch -vv | grep ': gone]'| grep -v "\*" | awk '{ print $1; }' | xargs -r git branch -d
Normalnie nie odpowiedziałbym na pytanie, które ma już 16 odpowiedzi, ale wszystkie inne odpowiedzi są błędne, a właściwa odpowiedź jest tak prosta. Pytanie brzmi: „Czy istnieje prosty sposób usunięcia wszystkich gałęzi śledzenia, których zdalny odpowiednik już nie istnieje?”
Jeśli „prosty” oznacza usunięcie ich wszystkich za jednym razem, nie jest kruchy, nie jest niebezpieczny i bez polegania na narzędziach, które nie wszyscy czytelnicy będą mieli, wtedy właściwa odpowiedź brzmi: nie.
Niektóre odpowiedzi są proste, ale nie robią tego, o co pytano. Inni robią to, o co proszono, ale nie są proste: wszyscy polegają na analizie danych wyjściowych Gita za pomocą poleceń manipulacji tekstem lub języków skryptowych, które mogą nie być obecne w każdym systemie. Ponadto większość sugestii używa komend porcelanowych, których wynik nie jest przeznaczony do analizowania przez skrypt („porcelana” odnosi się do komend przeznaczonych do działania przez człowieka; skrypty powinny używać komend niższego poziomu).
Dalsza lektura:
git branch
danych wyjściowych w skrypcie .git remote prune
,git prune
,git fetch --prune
Jeśli chcesz to zrobić bezpiecznie, w przypadku zastosowania w pytaniu (gałęzie śledzące odśmiecanie, które zostały usunięte na serwerze, ale nadal istnieją jako gałęzie lokalne) i tylko za pomocą poleceń Git wysokiego poziomu, musisz:
git fetch --prune
(lubgit fetch -p
, który jest aliasem lubgit prune remote origin
który robi to samo bez pobierania i prawdopodobnie nie jest tym, czego chcesz przez większość czasu).git branch -v
(każda osierocona gałąź śledzenia będzie oznaczona „[odszedł]”).git branch -d [branch_name]
w każdej osieroconej gałęzi śledzenia(co proponują niektóre inne odpowiedzi).
Jeśli chcesz napisać rozwiązanie, to
for-each-ref
jest twój punkt wyjścia, jak w odpowiedzi Marka Longaira tutaj i tej odpowiedzi na inne pytanie , ale nie widzę sposobu na wykorzystanie go bez napisania pętli skryptu powłoki lub użycia xargs lub czegoś takiego .Wyjaśnienie tła
Aby zrozumieć, co się dzieje, musisz zdawać sobie sprawę, że w sytuacji śledzenia oddziałów nie masz jednej gałęzi, ale trzy. (I przypomnij sobie, że „gałąź” oznacza po prostu wskaźnik do zatwierdzenia.)
Biorąc pod uwagę gałąź śledzenia
feature/X
, zdalne repozytorium (serwer) będzie miało tę gałąź i będzie ją wywoływaćfeature/X
. Twoje lokalne repozytorium ma gałąź,remotes/origin/feature/X
co oznacza: „To, co zdalnie powiedział mi jego funkcja / gałąź X, kiedy ostatnio rozmawialiśmy”, a na koniec, lokalne repozytorium ma gałąź,feature/X
która wskazuje na twoje ostatnie zatwierdzenie i jest skonfigurowana do „śledzenie”remotes/origin/feature/X
, co oznacza, że możesz pociągać i pchać, aby je wyrównać.W pewnym momencie ktoś usunął
feature/X
zdalne sterowanie. Od tego momentu pozostaniesz z lokalnymfeature/X
(którego prawdopodobnie już nie chcesz, ponieważ praca nad funkcją X jest prawdopodobnie zakończona), a twój zremotes/origin/feature/X
pewnością jest bezużyteczny, ponieważ jego jedynym celem było zapamiętanie stanu gałęzi serwera .A Git pozwoli ci automatycznie wyczyścić zbędne
remotes/origin/feature/X
- to właśniegit fetch --prune
robi - ale z jakiegoś powodu nie pozwala ci automatycznie usunąć własnegofeature/X
... nawet jeślifeature/X
nadal zawiera osierocone informacje o śledzeniu, więc ma informacje w celu zidentyfikowania wcześniejszych gałęzi śledzenia, które zostały całkowicie scalone. (Wszakże może dać Ci informacje, które pozwala wykonać operację ręcznie samemu).źródło
xargs
). Należy równieżgit alias
uprościć wiele spraw.xargs
bash lub bash, i prawdopodobnie nie szukają tutaj wyzwania w zakresie mikrokodowania, a jedynie szybkiej odpowiedzi, którą mogą bezpiecznie zastosować bez odwracania uwagi od prawdziwego celu .Znalazłem odpowiedź tutaj: Jak mogę usunąć wszystkie gałęzie git, które zostały scalone?
Upewnij się, że utrzymujemy mistrza
Możesz upewnić się, że
master
żadna inna gałąź w tym zakresie nie zostanie usunięta, dodając kolejnągrep
po pierwszej. W takim przypadku wybrałbyś:Więc jeśli chcielibyśmy zachować
master
,develop
istaging
na przykład, poszlibyśmy:Niech to będzie alias
Ponieważ jest trochę długi, możesz chcieć dodać alias do swojego
.zshrc
lub.bashrc
. Mój jest nazywanygbpurge
(dlagit branches purge
):Następnie załaduj ponownie
.bashrc
lub.zshrc
:lub
źródło
Rozwiązanie Windows
W przypadku programu Microsoft Windows Powershell:
git checkout master; git remote update origin --prune; git branch -vv | Select-String -Pattern ": gone]" | % { $_.toString().Trim().Split(" ")[0]} | % {git branch -d $_}
Wyjaśnienie
git checkout master
przechodzi do gałęzi mastergit remote update origin --prune
przycina odległe gałęziegit branch -vv
pobiera pełne wyjście wszystkich gałęzi ( referencja git )Select-String -Pattern ": gone]"
pobiera tylko te rekordy, w których zostały usunięte ze zdalnego.% { $_.toString().Trim().Split(" ")[0]}
uzyskać nazwę oddziału% {git branch -d $_}
usuwa gałąźźródło
.Trim()
po.toString()
, aby usunąć dwie spacje przed nazwą oddziału.git branch -d
nagit branch -D
inny pojawia się błąd oddział nie jest w pełni połączone.git branch -D
jest destrukcyjny i spowoduje usunięcie lokalnej pracy, której jeszcze nie wysłałeś.-d
jest zawsze bezpieczny, po prostu bądź ostrożny-D
.Dopasowanie wzorca do „zniknął” w większości innych rozwiązań było dla mnie trochę przerażające. Aby być bezpieczniejszym, wykorzystuje
--format
flagę, aby wyciągnąć status śledzenia każdego odgałęzienia .Potrzebowałem wersji przyjaznej dla systemu Windows, więc usuwa wszystkie gałęzie, które są wymienione jako „zniknęły” za pomocą programu Powershell:
W pierwszym wierszu znajduje się nazwa lokalnych oddziałów, których odgałęzienie „zniknęło”. Następny wiersz usuwa puste linie (które są wyprowadzane dla gałęzi, które nie „zniknęły”), a następnie nazwa gałęzi jest przekazywana do polecenia usunięcia gałęzi.
źródło
--format
opcja wydaje się dość nowa; Musiałem zaktualizować git z 2.10. Coś do 2.16.3, aby go zdobyć. Oto moja modyfikacja systemów Linux:git branch --list --format "%(if:equals=[gone])%(upstream:track)%(then)%(refname)%(end)" | sed 's,^refs/heads/,,' | grep . | xargs git branch -D
refname:short
. Następnie możesz usunąć linię% { $_ -replace '^refs/heads/', '' }
git branch --list --format "%(if:equals=[gone])%(upstream:track)%(then)%(refname:short)%(end)" | where { $_ -ne "" } | foreach { git branch -d $_ }
Prawdopodobnie dobrym pomysłem jest użycie-d
zamiast-D
. Wymuszone usunięcie nie powinno być konieczne w przypadku oddziałów, które nie są już zdalne.Usuń wszystkie gałęzie, które zostały scalone w Master, ale nie próbuj usuwać samego Master:
git checkout master && git pull origin master && git fetch -p && git branch -d $(git branch --merged | grep master -v)
lub dodaj alias:
alias gitcleanlocal="git checkout master && git pull origin master && git fetch -p && git branch -d $(git branch --merged | grep master -v)"
Wyjaśnienie:
git checkout master
główny oddział kasygit pull origin master
upewnij się, że oddział lokalny scalił wszystkie zmiany zdalnegit fetch -p
usuń odniesienia do zdalnych gałęzi, które zostały usuniętegit branch -d $(git branch master --merged | grep master -v)
usuń wszystkie gałęzie, które zostały scalone w Master, ale nie próbuj usuwać samego Masterźródło
git branch -D
polecenia to, co naprawdę chcesz usunąćgit branch -d
które powinny wyświetlać ostrzeżenie o nieodepchniętych gałęziach.Spowoduje to przycięcie wszystkich gałęzi, które już nie istnieją na pilocie.
źródło
X
; tygit checkout X
; teraz twoje repozytorium ma (lokalną) gałąź śledzeniaX
i gałąź zdalnąorigin/X
; zdalne repozytorium zostanie usunięteX
; tygit fetch-p
; w Twoim lokalnym repozytorium nie tylko zostały usunięte,origin/X
ale równieżX
. Czy tak mówisz?Jeszcze jedna odpowiedź dla stosu, czerpiąca mocno z odpowiedzi Patricka (co mi się podoba, ponieważ wydaje się, że usuwa niejasności co do tego, gdzie
gone]
będzie pasować wgit branch
wyniku), ale dodając wygięcie * nix.W najprostszej formie:
Mam to zawinięte w
git-gone
skrypt na mojej ścieżce:NB - The
--format
opcja wydaje się dość nowa; Musiałem zaktualizować git z 2.10. Coś do 2.16.3, aby go zdobyć.EDYCJA: poprawione, aby zawierały sugestie dotyczące
refname:short
od Benjamina W.NB2 - testowałem tylko
bash
, stąd hashbang, ale prawdopodobnie przenośnysh
.źródło
sed
części, używając%(refname:short)
w pierwszym wierszu?--format
. Innym sposobem na pominięciesed
części jest użyciegit update-ref -d
. Zauważ, że jest to prawdopodobnie nieco niebezpieczne, używaniegit for-each-ref
jest tutaj bezpieczniejsze (dane--shell
).--format
samemu to zrobiłem. Tylko jedno pytanie: dlaczego#!bash
? Wszystko tutaj wygląda mi na przenośnesh
.Może być przydatny w niektórych prostych liniach, aby wyczyścić wszystkie lokalne gałęzie z wyjątkiem master i develop
źródło
'git branch | grep -v "master" | grep -v "develop"
rodzaju rzeczami, zanim przystąpię do dodawania części usuwania polecenia. 👏😊Spowoduje to usunięcie wszystkich scalonych lokalnych rozgałęzień oprócz lokalnego odniesienia głównego i aktualnie używanego:
Spowoduje to usunięcie wszystkich gałęzi, które zostały już usunięte ze zdalnego repozytorium, do którego odnosi się „ origin ”, ale nadal są lokalnie dostępne w „ pilotach / origin ”.
źródło
git branch -vv | grep 'gone]' | grep -v "\*" | awk '{print $1}' | xargs -r git branch -d
Objaśnienie: Wolę zastąpićgit branch --merged
przez,git branch -vv
aby pokazać status (odszedł), ponieważ poprzednigit branch --merged
może pokazywać również masterNie sądzę, aby było to wbudowane polecenie, ale można bezpiecznie wykonać następujące czynności:
Kiedy używasz
-d
, git odmówi usunięcia gałęzi, chyba że zostanie ona całkowicie scalona zHEAD
gałęzią zdalnego śledzenia w górę. Tak więc zawsze możesz zapętlić dane wyjściowegit for-each-ref
i spróbować usunąć każdą gałąź. Problem z tym podejściem polega na tym, że podejrzewam, że prawdopodobnie nie chceszbug-fix-d
zostać usunięty tylko dlatego, żeorigin/bug-fix-d
zawiera jego historię. Zamiast tego możesz utworzyć skrypt podobny do następującego:Ostrzeżenie: nie testowałem tego skryptu - używaj tylko ostrożnie ...
źródło
TL; DR:
Usuń WSZYSTKIE lokalne oddziały, które nie są zdalne
Usuń WSZYSTKIE lokalne oddziały, które nie są zdalne ORAZ w pełni scalone ORAZ nie są używane, jak powiedziano w wielu odpowiedziach wcześniej.
Wyjaśnienie
git fetch -p
będzie przycinać wszystkie gałęzie, które już nie istnieją na pilociegit branch -vv
wydrukuje lokalne oddziały, a przycięta gałąź zostanie oznaczonagone
grep ': gone]'
wybiera tylko gałąź, która zniknęłaawk '{print $1}'
filtruj dane wyjściowe, aby wyświetlić tylko nazwę gałęzixargs git branch -D
zapętli wszystkie linie (gałęzie) i wymusi usunięcie tej gałęziDlaczego
git branch -D
niegit branch -d
, będziesz miał dla oddziałów, które nie są w pełni połączone.źródło
Możesz to zrobić:
źródło
Na podstawie powyższych informacji zadziałało to dla mnie:
Usuwa wszystkie lokalne oddziały za
': gone] '
pomocą zdalnego.źródło
gone
gdziekolwiek w nazwie.Powyższe polecenie może służyć do pobierania gałęzi, które są scalane i usuwane w trybie zdalnym, a także usuwa gałąź lokalną, która nie jest już dostępna w trybie zdalnym
źródło
grep gone <(git branch -v) | cut -d ' ' -f 3 | xargs git branch -D
aby wymusić usunięcie wszystkichgone
dowolnym miejscu (npusingonefunction
.).Nic z tego nie było dla mnie odpowiednie. Chciałem czegoś, co wyczyści wszystkie lokalne gałęzie, które śledziły gałąź zdalną, w
origin
której usunięto gałąź zdalną (gone
). Nie chciałem usuwać lokalnych gałęzi, które nigdy nie zostały skonfigurowane do śledzenia gałęzi zdalnej (tj. Moich lokalnych gałęzi programistów). Chciałem też mieć prostą liniówkę, która po prostu używagit
lub inne proste narzędzia CLI, zamiast pisać własne skrypty. Skończyło się na użyciu trochęgrep
iawk
zrobić to proste polecenia.To ostatecznie skończyło się na moim
~/.gitconfig
:Oto
git config --global ...
polecenie umożliwiające łatwe dodanie tego jakogit prune-branches
:UWAGA: W poleceniu config używam tej
-d
opcjigit branch
zamiast-D
, jak w mojej rzeczywistej konfiguracji. Używam,-D
ponieważ nie chcę słyszeć, jak Git narzeka na nie połączone gałęzie. Możesz także chcieć tę funkcjonalność. Jeśli tak, po prostu użyj-D
zamiast-d
na końcu tego polecenia config.źródło
git branch -vv
i żałować,: gone]
a czego nie robićgit branch -v
i nie żartować[gone]
?v
. Jeśligit branch -v | grep '[gone]'
Ci odpowiada, idź. To wydaje się trochę czystsze.Na podstawie Git Tip: Usuwanie starych lokalnych gałęzi , które wygląda podobnie do rozwiązania jason.rickman Zaimplementowałem niestandardowe polecenie o nazwie git odszedł używając Bash:
git gone -pn
łączy przycinanie i wyświetlanie „znikniętych” gałęzi:Następnie możesz pociągnąć za spust za pomocą
git gone -d
lubgit gone -D
.Notatki
"$BRANCH/.*: gone]"
tam$BRANCH
, gdzie normalnie by to byłoorigin
. To prawdopodobnie nie zadziała, jeśli twoje wyjście Git jest zlokalizowane na francuski itp.źródło
git gone
wygląda na aliasgit branch -vv | grep 'origin/.*: gone]' | awk '{print $1}' | xargs git branch -d
, który rozwiązuje problem PO.Rysunek mocno z numerem z innymi odpowiedziami tutaj, ja skończyło się z następujących (git 2.13 i nowszych, wierzę), który powinien działać na każdym systemie UNIX-like powłoce:
To w szczególności używa
for-each-ref
zamiastbranch
(jakbranch
to jest polecenie „porcelany” zaprojektowanej dla wyjścia czytelnego dla człowieka, a nie przetwarzania maszynowego) i używa swojego--shell
argumentu, aby uzyskać odpowiednio uniknięte wyjście (pozwala to nam nie martwić się o żaden znak w nazwie ref).źródło
[ ! -z "$ref" ]
to znaczy. Myślę, że multi-liner już by pomógł. Ale wciąż dziękuję za Twój wkład!Jeszcze jedna odpowiedź, ponieważ żadne z rozwiązań nie odpowiada moim potrzebom w zakresie elegancji i wieloplatformowości:
Polecenie usunięcia lokalnych oddziałów, które nie są zdalnie:
Aby zintegrować go z gitconfig, aby można go było uruchomić z
git branch-prune
:Grzmotnąć
PowerShell
(Potrzebujesz pomocy w znalezieniu uniwersalnego polecenia dla PowerShell i bash)
Dlaczego ta odpowiedź jest najlepsza?
git branch-prune
polecenie do gitgit for-each-ref
--filter
bez zewnętrznych zależnościWyjaśnienie:
~\.gitconfig
. Po wykonaniu tego możesz po prostu zrobićgit branch-prune
--prune
flagą, która „przycina gałęzie do zdalnego śledzenia, które nie są już zdalne”git for-each-ref
i--filter
, aby uzyskać listę oddziałów są[gone]
(nie zdalne)źródło
Wymyśliłem ten skrypt bash. To zawsze gałęzie
develop
,qa
,master
.źródło
Używam krótkiej metody, aby zrobić lewę, zalecam zrobić to samo, ponieważ może to zaoszczędzić kilka godzin i dać ci lepszą widoczność
Wystarczy dodać następujący fragment kodu do pliku .bashrc (.bashprofile w systemie Macos).
Będziesz musiał edytować wyrażenia regularne grep, aby dopasować je do swoich potrzeb (tutaj, zapobiega to usunięciu master, preprodprod i dmz)
źródło
git fetch --all --prune
wykonał lewę. Dzięki!To działało dla mnie:
źródło
Nie jestem pewien, jak długo, ale teraz używam git-up, który się tym zajmuje.
ja robię
git up
i zaczyna śledzić nowe gałęzie i usuwa stare.Żeby było jasne, nie jest to gotowe narzędzie git - https://github.com/aanand/git-up
BTW to także ukrywa brudne drzewo i sprawia, że rebases wciąż są sprawiedliwe
git up
.Mam nadzieję, że przyda się komuś
źródło
Oto rozwiązanie, którego używam do skorupki ryby. Testowane na
Mac OS X 10.11.5
,fish 2.3.0
igit 2.8.3
.Kilka uwag:
Upewnij się, że ustawiłeś prawidłowy
base_branch
. W tym przypadku używamdevelop
jako gałęzi podstawowej, ale może to być wszystko.Ta część jest bardzo ważna:
grep -v "\(master\|$base_branch\|\*\)"
. Zapewnia to, że nie usuniesz master ani gałęzi bazowej.Używam
git branch -d <branch>
jako dodatkowego środka ostrożności, aby nie usuwać żadnych gałęzi, które nie zostały w pełni połączone z wcześniejszym lub obecnym HEAD.Łatwym sposobem na przetestowanie jest zastąpienie
git branch -d $f
goecho "will delete $f"
.Powinienem też dodać: UŻYWAJ NA WŁASNE RYZYKO!
źródło
Napisałem skrypt Pythona za pomocą GitPython, aby usunąć lokalne gałęzie, które nie istnieją na zdalnym.
Mam nadzieję, że ktoś uzna to za przydatne, jeśli coś przeoczyłem, dodaj komentarze.
źródło
Jeśli używasz
zsh
powłoki zOh My Zsh
zainstalowanym programem, najłatwiejszym sposobem na zrobienie tego bezpiecznie jest użycie wbudowanego autouzupełniania.Najpierw określ, które gałęzie chcesz usunąć:
wyświetli się lista już połączonych oddziałów
Po poznaniu kilku, które chcesz usunąć, wpisz:
Wszystko, co musisz zrobić, to nacisnąć [tab], a wyświetli się lista lokalnych oddziałów. Użyj polecenia uzupełnij tabulatorem lub ponownie wciśnij klawisz [tab] i możesz je kolejno przełączać, aby wybrać gałąź za pomocą [enter].
Karta Wybierz gałęzie w kółko, aż pojawi się lista gałęzi, które chcesz usunąć:
Teraz wystarczy nacisnąć Enter, aby usunąć kolekcję oddziałów.
Jeśli nie używasz zsh na swoim terminalu ... Pobierz go tutaj.
źródło
Lubię używać potoków, ponieważ ułatwia to odczytanie polecenia.
To jest moje rozwiązanie, jeśli chcesz usunąć wszystkie gałęzie oprócz master.
Aby usunąć inne gałęzie spełniające kryteria, zmodyfikuj pierwszy i drugi blok.
źródło
Oto prosta odpowiedź, która zadziałała dla mnie przy użyciu klienta git:
Usuń repozytorium całkowicie ze swojego komputera, a następnie sprawdź ponownie.
Żadnych chowańców z ryzykownymi skryptami.
źródło