2013-06-15 13 views
7

Mam zdalne repozytorium i 2 klony.
Tworzę gałąź w jednym z klonów, np. test. Wykonuję trochę pracy i 2 razy zatwierdzam. Łączę się z oddziałem master i push -u.
Robię git pull w drugim klonie.
Widzę zarówno master i test.
W pierwszym projekcie klonu wykonuję: git origin :test, aby usunąć gałąź test na zdalnym repozytorium.
test jest usuwany na odległych repozytoriach.
Robię git branch -D test, a gałąź test jest również usuwana lokalnie.
Jeśli zrobię git branch -a uzyskać:Dlaczego widzę usuniętą gałąź zdalną?

*master 
remotes/origin/master  

Teraz w drugim repozytorium robię git pull.
Wydaje się, że lokalny test został usunięty, ale git wydaje się "myśleć", że zdalny oddział test nadal istnieje.
Jeśli robię git branch -a uzyskać:

* master 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/master 
    remotes/origin/test  

Dlaczego usunięte test oddział pojawiać jako zdalny oddział?

Odpowiedz

3

Spróbuj użyć tego polecenia git remote prune origin. Usunięta gałąź powinna zniknąć. To powinno usunąć lokalne odwołania do odległych oddziałów.

+0

Właściwie oczekiwałem, że 'git' zachęci mnie do zrobienia tego w taki sam sposób, w jaki prosi się o" git pull ". Dlaczego nie pyta? Widziałem to podpowiadając, ale może było inaczej? – Cratylus

+0

Tak, wiem o co ci chodzi. Naprawdę nie mogę powiedzieć, że widziałem git podpowiadający cokolwiek na ten temat, kiedy robię pull, więc zgaduję, że to był inny przypadek użycia. Próbowałeś wepchnąć coś do usuniętej gałęzi? – crea1

10

Domyślne opcje dla git fetch (iw konsekwencji git pull) nie powodują przycinania usuniętych oddziałów zdalnych. Nie jestem pewien, jaka jest logika tego domyślnika. W każdym przypadku, aby przycinać skasowanych zdalnych oddziałów, albo pobrać z

git fetch -p 

lub uruchomić

git remote prune [-n] <name> 

wyraźnie. Za pomocą flagi -n będzie raportowane, które gałęzie będą przycinane, ale w rzeczywistości ich nie przycinać. Aby uzyskać więcej informacji, zobacz git-fetch(1) i git-remote(1).

+0

Ale jeśli repozytorium nie było moje, skąd miałbym wiedzieć, że muszę "przycinać"? – Cratylus

+1

Możesz uruchomić 'git remote prune -n ​​', aby uzyskać listę, ale uciekam się do tego, że po każdym pobieraniu zawsze uruchamiam 'git fetch -p'. Nie zdawałem sobie sprawy, że nie ma opcji na "git pull", ponieważ nigdy nie używam 'git pull'. –

Powiązane problemy