0Pricing
Git & GitHub Professional Workflow · Lekcja

Utrzymanie i porządkowanie repozytorium

Poznaj polecenia takie jak `git gc` i `git prune`, aby porządkować i optymalizować lokalne repozytorium Git.

Utrzymanie i porządkowanie repozytorium to bezpłatna lekcja Git & GitHub Professional Workflow na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Git & GitHub Professional Workflow, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Git & GitHub Professional Workflow zawiera 4 lekcji w sumie.

Wprowadzenie do porządkowania Git

Z czasem w lokalnych repozytoriach Git mogą gromadzić się niepotrzebne pliki, a repozytoria mogą działać mniej wydajnie. Można to porównać do nieporządnego pokoju!

W tej lekcji nauczą się Państwo czyścić i optymalizować repozytoria Git za pomocą takich poleceń jak git gc i git prune. Dzięki temu projekty będą działać sprawnie.

Wyjaśnienie magazynu obiektów Git

Najpierw zrozummy, jak Git przechowuje dane. Git zapisuje historię projektu jako serię „obiektów”:

  • Bloby: Zawartość plików
  • Drzewa: Katalogi i ich zawartość
  • Commity: Migawki projektu w określonym momencie
  • Tagi: Wskaźniki do konkretnych commitów

Obiekty te mogą być przechowywane jako „luźne obiekty” albo kompresowane w „packfiles” w celu zwiększenia wydajności.

Wprowadzenie do `git gc` (garbage collect)

Polecenie git gc jest skrótem od „garbage collect”. To wbudowane narzędzie Git służące do czyszczenia i optymalizowania repozytorium.

Do jego głównych zadań należą:

  • Pakowanie luźnych obiektów: Kompresowanie pojedynczych obiektów do wspólnych packfiles.
  • Usuwanie nieosiągalnych obiektów: Usuwanie obiektów, do których nie odwołuje się już żaden commit, gałąź ani tag (po upływie określonego czasu).
  • Usuwanie starych packfiles: Pozbywanie się nieaktualnych skompresowanych plików obiektów.

Ten proces zmniejsza repozytorium i przyspiesza jego działanie.

Uruchamianie `git gc` (zastosowanie ogólne)

Polecenie git gc można uruchomić ręcznie w dowolnym momencie. Git uruchamia je również automatycznie w tle podczas wykonywania niektórych operacji, takich jak wysyłanie lub pobieranie zmian.

Jego uruchomienie jest na ogół bezpieczne, ale przed gruntownym czyszczeniem warto upewnić się, że nie ma niezacommitowanych zmian, które mogą być potrzebne do odzyskania.

Spróbujmy uruchomić je w terminalu:

git gc

Interpretowanie wyników `git gc`

Po uruchomieniu git gc zobaczą Państwo wynik podobny do tego:

Counting objects: 1234, done. Compressing objects: 100% (987/987), done. Writing objects: 100% (1234/1234), done. Total 1234 (delta 567), reused 0 (delta 0) Removing duplicate objects: 100% (256/256), done. Pruning objects: 100% (123/123), done.

Pokazuje to, że Git pakuje obiekty, zapisuje nowe packfiles i wykonuje pruning (usuwa stare, nieosiągalne obiekty). Liczby będą się różnić w zależności od stanu repozytorium.

Skupienie na `git prune`

Chociaż git gc wykonuje wiele zadań związanych z czyszczeniem, git prune służy konkretnie do usuwania „osieroconych” lub „nieosiągalnych” obiektów.

  • Obiekty osierocone: Są to obiekty istniejące w repozytorium, do których nie odwołuje się już żaden commit, branch ani tag i które nie są również częścią pliku packfile.
  • Obiekty nieosiągalne: To pojęcie podobne do obiektów osieroconych, ale szersze. Mogą powstawać z różnych przyczyn, na przykład po operacji rebase lub reset, która przepisuje historię.

git prune usuwa te obiekty, jeśli są starsze niż domyślny czas wygaśnięcia (zwykle 2 tygodnie).

Bezpośrednie uruchamianie `git prune`

Zwykle nie trzeba uruchamiać git prune bezpośrednio, ponieważ wywołuje je git gc. Można jednak użyć go do bardziej ukierunkowanego czyszczenia.

Aby sprawdzić, co zrobiłoby git prune, bez faktycznego usuwania czegokolwiek, należy użyć opcji --dry-run:

git prune --dry-run

Usuwanie obiektów z okresem wygaśnięcia

Domyślnie git prune (a także etap usuwania obiektów w git gc) usuwa tylko obiekty starsze niż dwa tygodnie. Można to zmienić za pomocą opcji --expire.

Jest to przydatne, jeśli chcą Państwo intensywnie wyczyścić osierocone obiekty utworzone niedawno, na przykład po eksperymentalnej operacji rebase, której na pewno nie trzeba będzie cofać.

Na przykład, aby usunąć obiekty starsze niż 1 dzień:

git prune --expire=1.day

Różnica między `git prune` a `git reflog expire`

Należy pamiętać, aby nie mylić git prune z git reflog expire. Chociaż oba polecenia są związane z czyszczeniem, służą do różnych celów:

  • git prune: Usuwa rzeczywiste obiekty Git (bloby, drzewa i commity) z bazy obiektów.
  • git reflog expire: Czyści wpisy w reflogu (lokalnej historii miejsc, w których znajdował się HEAD), przez co znalezienie niektórych commitów staje się trudniejsze, ale same obiekty nie są usuwane.

Zawsze należy zachować ostrożność podczas modyfikowania historii lub uruchamiania poleceń czyszczących!

Sprawdzian z konserwacji

Które z poniższych stwierdzeń najlepiej opisuje główną rolę git gc?

Podsumowanie i kolejne kroki

Gratulacje! Wiedzą już Państwo, jak utrzymywać porządek i wydajność repozytoriów Git.

  • git gc: Wszechstronne polecenie służące do garbage collection, pakowania obiektów i ich usuwania.
  • git prune: Służy konkretnie do wyszukiwania i usuwania nieosiągalnych, osieroconych obiektów starszych niż określony czas wygaśnięcia.

Regularna konserwacja pomaga zapewnić płynny przebieg pracy z Gitem i zapobiega nadmiernemu zajmowaniu miejsca na dysku przez repozytoria. Tak trzymać!

Często zadawane pytania

Czy lekcja „Utrzymanie i porządkowanie repozytorium” jest bezpłatna?

Tak — pełny tekst „Utrzymanie i porządkowanie repozytorium” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Git & GitHub Professional Workflow, przejdź na CoddyKit PRO. Kurs Git & GitHub Professional Workflow zawiera 4 lekcji w sumie.

Co nauczysz się w „Utrzymanie i porządkowanie repozytorium”?

Poznaj polecenia takie jak `git gc` i `git prune`, aby porządkować i optymalizować lokalne repozytorium Git. Ćwiczysz Git & GitHub Professional Workflow z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Git & GitHub Professional Workflow?

Nie wymagamy żadnego doświadczenia. Git & GitHub Professional Workflow w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Utrzymanie i porządkowanie repozytorium”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Git & GitHub Professional Workflow?

Tak. Każda lekcja Git & GitHub Professional Workflow zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Git Reflog i odzyskiwanie historii
  2. Git Bisect do debugowania
  3. Utrzymanie i porządkowanie repozytorium
  4. Przepisywanie historii za pomocą git filter-repo
← Powrót do Git & GitHub Professional Workflow