pobierać z pochodzenia za pomocą usuniętych zdalnych gałęzi?

Odpowiedzi:

811

Musisz wykonać następujące czynności

git fetch -p

Spowoduje to zaktualizowanie lokalnej bazy danych zdalnych oddziałów.

Pavan Yalamanchili
źródło
1
Dziękuję Ci bardzo. Wcześniej ręcznie usunąłem te gałęzie.
Maksim Dmitriev
4
Z jakiegoś powodu twoje polecenie nie działało, ale to działało dla nieistniejącej zdalnej gałęzi w moim originrozwidleniu: git fetch -p origin Kiedy to zrobiłem, git branch -r nieistniejąca zdalna gałąź już się nie pojawiła.
oldfartdeveloper
11
Dla kompletności: musi być taki sam git remote prune origini podobny jak git pull --prunewspomniano odpowiednio na stackoverflow.com/a/6127884/94687 i stackoverflow.com/a/17983126/94687 .
imz - Ivan Zakharyaschev
6
chłopaki, kiedy to robię, mówi, [deleted] (none) -> origin/ < branch name >a gałąź nadal jest wyświetlana w lokalnym repozytorium, jakiś pomysł, dlaczego?
Buddhi741,
4
Otrzymuję komunikat z informacją, że moje gałęzie zostały usunięte, ale uruchomione git branchnadal pokazuje gałęzie, które rzekomo zostały usunięte.
sdfsdf
91

Od http://www.gitguys.com/topics/adding-and-removing-remote-branches/

Gdy ktoś usunie gałąź ze zdalnego repozytorium, git nie usunie automatycznie gałęzi lokalnego repozytorium, gdy użytkownik pobierze git lub pobierze git. Jeśli jednak użytkownik chce usunąć wszystkie gałęzie śledzenia ze swojego lokalnego repozytorium, które zostały usunięte w repozytorium zdalnym, może wpisać:

git zdalne pochodzenie śliwek

Uwaga: parametr -p z git fetch -pfaktycznie oznacza „przycinać”.
Niezależnie od wybranego sposobu nieistniejące zdalne gałęzie zostaną usunięte z lokalnego repozytorium.


źródło
Podoba mi się to, ponieważ nie przynosi niczego nowego.
Marek R
30

Musisz wykonać następujące czynności

git fetch -p

w celu zsynchronizowania listy oddziałów. Podręcznik git mówi

-p, --prune
Po pobraniu usuń wszelkie odniesienia do zdalnego śledzenia, które już nie istnieją na pilocie. Znaczniki nie podlegają przycinaniu, jeśli są pobierane tylko z powodu domyślnego automatycznego śledzenia znacznika lub --tagsopcji. Jeśli jednak tagi są pobierane z powodu jawnego refspec (w wierszu polecenia lub w konfiguracji zdalnej, na przykład jeśli pilot został sklonowany z tą --mirroropcją), to również podlegają przycinaniu.

Osobiście lubię używać, git fetch origin -p --progressponieważ pokazuje wskaźnik postępu.

naXa
źródło
11

To zadziałało dla mnie.

git remote update --prune
Antstud
źródło
6

Jeśli chodzi o git fetch -p, jego zachowanie zmieniło się w Git 1.9 i tylko Git 2.9.x / 2.10 odzwierciedla to.

Zobacz zatwierdzenie 9e70233 (13 czerwca 2016 r.) Autor: Jeff King ( peff) .
(Połączone przez Junio ​​C Hamano - gitster- w commit 1c22105 , 06 lipca 2016)

fetch: dokument, że przycinanie odbywa się przed pobraniem

Zostało to zmienione w 10a6cc8 ( fetch --prune: Uruchom śliwkę przed pobraniem, 02.02.2014), ale wygląda na to, że nikt w tej dyskusji nie zdawał sobie sprawy, że wyraźnie reklamujemy „po”.

Dokumentacja mówi teraz:

Przed pobraniem usuń odniesienia do zdalnego śledzenia, które już nie istnieją na pilocie

Tak jest ponieważ:

Gdy mamy gałąź zdalnego śledzenia o nazwie „ frotz/nitfol” z poprzedniego pobierania, a nadrzędny teraz ma gałąź o nazwie „ frotz”, pobieranie nie może usunąć „ frotz/nitfol” z „ git fetch --prune” z nadrzędnego. git poinformuje użytkownika, aby użył „ git remote prune” do rozwiązania problemu.

Zmień sposób działania „ fetch --prune”, przenosząc operację przycinania przed operacją pobierania. W ten sposób, zamiast ostrzegać użytkownika o konflikcie, automatycznie go naprawia.

VonC
źródło