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.



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


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.


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.