2016-03-18 8 views
32

Przez przypadek przyciąłem kilka odległych gałęzi i tak naprawdę nie wiem, jakie są tego konsekwencje (kliknąłem przycisk "Przycinaj odległe gałęzie" w rozszerzeniach Git, myśląc, że usunie to zdalny oddział).Co to jest przycinanie Git?

Oficjalna dokumentacja mówi "git-prune - Przycinaj wszystkie nieosiągalne obiekty z bazy danych obiektów". Naprawdę nie rozumiem, co to oznacza. Zgaduję, że to mogło usunąć połączone gałęzie, ale nie jestem tego pewien.

+0

Prawdopodobny duplikat http://stackoverflow.com/questions/4040717/git-remote-prune-didnt-show-as-many-pruned-branches-as-i-ponded – Raghavan

+0

Może warto przyjrzeć się 'git gc ': https://git-scm.com/docs/git-prune też. – swdon

Odpowiedz

33

"Przycinaj zdalne gałęzie" w Rozszerzeniach Git wykonuje polecenie git remote prune, które usuwa lokalne zdalne gałęzie śledzenia, w których gałąź już nie istnieje na pilocie.

Zobacz tutaj: https://git-scm.com/docs/git-remote#git-remote-empruneem

+0

, więc w zasadzie daje pierwszeństwo pilotowi i dostosowuje lokalnie do swoich odległych oddziałów? – Honey

+0

@Honey nie, po prostu usuwa lokalne ** zdalne gałęzie śledzenia **, normalne gałęzie nie są dotykane. – 1615903

14

To tylko śmieci zbiera gałęzie.

To oznacza, że ​​jeśli obiekt (commit) nie może zostać osiągnięty w żadnym z przodków twojej gałęzi, zostanie usunięty z bazy danych git, a jako taki nie może być już osiągnięty.

To tylko trochę oczyszcza repozytorium git i czyni je lżejszym.

+0

Zgodnie z dokumentacją, w przypadku zadań związanych z prowadzeniem domu takich jak to może być lepiej zrobić "git gc" zamiast "git prune", który zasadniczo będzie również git-prune. – swdon

0

Nie może być odległe gałęzie funkcji, które są usuwane po tym jak połączyć je w pana. Mogliśmy usunąć gałęzie funkcji jako sposób oczyszczania. Ale jeśli sprawdziłeś usuniętą gałąź do lokalnego systemu i ustawiłeś status na śledzenie, polecenie git pull nie usunie tych lokalnych oddziałów (ponieważ te są już odłączone od serwera). Aby posprzątać tego rodzaju lokalne oddziały osierocone, przyda się komenda git prune.