Co to jest przycinanie Git?

86

Przypadkowo przyciąłem niektóre zdalne gałęzie i naprawdę nie wiem, jakie są tego konsekwencje (kliknąłem przycisk „Usuń zdalne gałęzie” w rozszerzeniach Git, myśląc, że spowoduje to usunięcie zdalnej gałęzi).

Oficjalna dokumentacja mówi "git-prune - Usuń wszystkie niedostępne obiekty z bazy danych obiektów". Naprawdę nie rozumiem, co to oznacza. Domyślam się, że mogło to spowodować usunięcie połączonych gałęzi, ale nie jestem pewien.

Daniel Ball
źródło
Możliwy duplikat stackoverflow.com/questions/4040717/ ...
Raghavan
1
Warto zajrzeć na git gc: git-scm.com/docs/git-prune .
kovac

Odpowiedzi:

91

„Wyczyść zdalne gałęzie” w rozszerzeniach Git wykonuje git remote prunepolecenie, które usuwa lokalne zdalne gałęzie śledzenia, w których gałąź już nie istnieje na zdalnym.

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

1615903
źródło
więc zasadniczo daje priorytet Twojemu zdalnemu i dostosowuje lokalny do Twoich zdalnych oddziałów?
Honey
3
@ Kochanie, po prostu usuwa lokalne zdalne gałęzie śledzenia , normalne gałęzie nie są dotykane.
1615903
32

To tylko śmieci zbiera twoje gałęzie.

Oznacza to, że jeśli obiekt (zatwierdzenie) nie może zostać osiągnięty w żadnym z przodków twojej gałęzi, zostanie on usunięty z bazy danych git i jako taki nie będzie już dostępny.

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

niebieski112
źródło
4
Zgodnie z dokumentacją, w przypadku zadań związanych z utrzymaniem domu, takich jak ta, może być lepiej zrobić git gcraczej niż a, git prunektóre zasadniczo będzie również wykonywać git prune.
kovac
1
Głos przeciw: ta odpowiedź (i pytanie w tej sprawie) myli git prunei git remote prune. Nie są takie same, ta ostatnia faktycznie czyści gałęzie, które już nie istnieją na pilocie, pozostawiając nietknięte oddziały lokalne.
JBert
12

Ważne jest, aby wiedzieć, że śliwka jest związana z repo . Nie wszyscy wiedzą, że możesz połączyć lokalne repozytorium z wieloma pilotami. Przydaje się, gdy na przykład pracujesz z projektem open source i jest wymuszany do pracy za pomocą forków.

Tak więc polecenie prune wymaga nazwy repozytorium. W większości przypadków tak git remote prune origin, ale możesz zadzwonić do swojego repozytorium w dowolny sposób, nie musi origin.

yuranos
źródło
2

Mogą istnieć zdalne gałęzie funkcji, które są usuwane po scaleniu ich w master. Mogliśmy usunąć gałęzie funkcji w celu oczyszczenia. Ale jeśli wyewidencjonowałeś usuniętą gałąź do systemu lokalnego i ustawiłeś na status śledzenia, git pull nie usunie tych lokalnych gałęzi (ponieważ są już odłączone od serwera). Aby oczyścić tego rodzaju lokalne gałęzie osierocone, git pruneprzyda się polecenie.

Santhosh J
źródło