Kiedy Git odświeża listę zdalnych gałęzi?

495

Za pomocą git branch --allpokazuje wszystkie oddziały zdalne i lokalne . Kiedy Git odświeża tę listę?

Podczas ciągnięcia / pchania? Jak mogę go odświeżyć za pomocą Git Bash ?

BendEg
źródło
5
Uwaga: git ls-remotemoże być tutaj interesująca.
jthill

Odpowiedzi:

1220

Aby zaktualizować lokalną listę zdalnych oddziałów:

git remote update origin --prune

Aby pokazać wszystkie lokalne i zdalne gałęzie, o których (lokalny) Git wie

git branch -a
centralcmd
źródło
143
git remote update origin --prunewłaśnie tego szukałem
WonderLand
6
O różnicy między tą odpowiedzią, która wykorzystuje git remote update, a odpowiedzią zaakceptowaną, która wykorzystuje git fetch, zobacz tutaj
The Red Pea
6
to jest poprawna odpowiedź. git fetchnie usunąłem mojej lokalnej pamięci podręcznej zdalnych gałęzi. Tylko --prunebył w stanie wszystko wyczyścić.
Felipe Alvarez
23
Możesz poprosić git o zrobienie tego automatycznie za pomocągit config remote.origin.prune true
kjhf,
8
git remote prune originma ten sam efekt i piszesz mniej.
Dvin
27

Wierzę, że jeśli uruchomisz git branch --allz Bash, to lista zdalnych i lokalnych gałęzi, które zobaczysz, będzie odzwierciedlała to, o czym twój lokalny Git „wie” w momencie uruchomienia polecenia. Ponieważ Twój Git jest zawsze aktualny w odniesieniu do lokalnych oddziałów w twoim systemie, lista lokalnych oddziałów zawsze będzie dokładna.

Jednak w przypadku zdalnych oddziałów nie musi tak być. Twój lokalny Git wie tylko o zdalnych gałęziach, które widział podczas ostatniego pobierania (lub ściągania). Możliwe więc, że możesz uruchomić git branch --alli nie zobaczyć nowej zdalnej gałęzi, która pojawiła się po ostatnim pobraniu lub ściągnięciu.

Aby upewnić się, że Twoja lokalna i zdalna lista oddziałów jest aktualna, możesz to zrobić git fetch przed uruchomieniem git branch --all.

Aby uzyskać więcej informacji, „zdalne” gałęzie, które pojawiają się podczas uruchamiania, git branch --allnie są wcale zdalne; w rzeczywistości są lokalne. Załóżmy na przykład, że na pilocie znajduje się gałąź, featurektórą przynajmniej raz ściągnąłeś do lokalnego Gita. Po origin/featureuruchomieniu pojawi się na liście jako gałąź git branch --all. Ale ta gałąź jest w rzeczywistości lokalną gałęzią Git. Gdy to zrobisz git fetch origin, ta gałąź śledzenia zostanie zaktualizowana o wszelkie nowe zmiany ze pilota. Dlatego stan lokalny może stać się nieaktualny, ponieważ mogą istnieć nowe gałęzie zdalne lub gałęzie śledzące mogą stać się nieaktualne.

Tim Biegeleisen
źródło
4
Tak, git fetchzrobiłem to.
BendEg
14
Uwaga dla downvoters: Jeśli uważasz, że poprawne informacje z dobrze skomentowanym wyjaśnieniem zasługują na głosowanie, to przynajmniej odezwij się i zostaw komentarz.
Tim Biegeleisen,
3
git fetchnie działa dla mnie, trzeba dodać --prune. Btw, nie jestem zwycięzcą;)
Deqing
3
git fetchnie usuwa usuniętych zdalnych gałęzi. Prawdopodobnie dlatego niektórzy głosowali
Jérôme MEVEL
@ JérômeMEVEL To dla mnie dziwne, że przyjęta odpowiedź ma teraz 1000 głosów pozytywnych. To szalone ... szkoda, że ​​nie miałem takiej ekspozycji :-)
Tim Biegeleisen
24

OP nie poprosił o oczyszczenie wszystkich pilotów, a raczej wszystkich gałęzi domyślnego pilota.

Tak więc git fetch --prunenależy użyć.

Ustawienie git config remote.origin.prune truepowoduje --pruneautomatyczne. W takim przypadku wystarczy git fetchrównież przyciąć przestarzałe zdalne gałęzie z lokalnej kopii. Zobacz także Automatyczne przycinanie za pomocą Git fetch lub pull .

Zauważ, że to nie czyści lokalnych oddziałów, które nie śledzą już zdalnego oddziału. Zobacz Jak przycinać lokalne gałęzie śledzenia, które już nie istnieją w tym celu na odległość .

Oliver
źródło
Krótko mówiącgit fetch -p
Michael Warner,
2

Służy git fetchdo pobierania wszystkich ostatnio utworzonych gałęzi.

vvv
źródło
1
git fetchnic nie zmieniło dla mnie w git 2.17.1. Z jakiej wersji i opcji korzystałeś?
PointedEars,
2
Musisz albo --prunealbo, git config remote.NAME.prune trueżeby rozwiązać pytanie OP
Oliver
-1

Jeśli używasz Eclipse i chcesz zobaczyć nowe gałęzie z góry;

W perspektywie Git kliknij prawym przyciskiem myszy repozytorium Git, a następnie wybierz „Pobierz z pobierania”. Spowoduje to pobranie nowych zdalnych gałęzi.

Selman Gun
źródło
-8

Jeśli używasz Eclipse,

  1. Otwórz „Repozytoria Git”
  2. Znajdź swoje repozytorium.
  3. Otwórz „Oddziały”, a następnie „Zdalne śledzenie”.

Git

Wszyscy powinni tam być. Kliknij prawym przyciskiem myszy i „kasy”.

markthegrea
źródło
Jak to odpowiada na pytanie? - „Kiedy Git odświeża listę zdalnych gałęzi?”
Peter Mortensen
Kiedy chciałem odświeżyć moje lokalne oddziały w zaćmieniu, poszukałem Google'a i zabrało mnie to tutaj. Ten post faktycznie pomógł kilku osobom, ponieważ miał pewne pozytywne opinie. Może źle zrozumiałem pytanie. Dla mnie Eclipse IS Git (interfejs do niego). Przepraszam za obrażanie wszystkich!
markthegrea