Strona główna ProgramowanieGit Gdzie jest lokalne repozytorium Gita?

Gdzie jest lokalne repozytorium Gita?

przez Krzysiu Weiss
0 komentarze 5,3K wizyt

W dzisiejszym artykule postaram się opisać czym jest katalog .git oraz gdzie jest lokalne repozytorium Gita. Jeżeli potrzebujesz informacji jak zainstalować Gita, rzuć okiem na poprzedni artykuł, w którym opisałem poszczególne kroki instalacji dla systemu Windows.

Czym jest lokalne repozytorium?

Analizując architekturę na jakiej opiera się przepływ danych w gicie, zazwyczaj spotyka się diagram zbliżony do poniższego.

Prosty diagram z flow danych w git
Żródło: Wikipedia

Nie chciałbym się w tym momencie skupiać na samym flow i przepływie danych w ramach projektu, ponieważ będzie to poruszone już w kolejnym artykule. W związku z tym skupmy się tylko na zielonym prostokącie – Local repository.

Lokalne repozytorium jest pewnego rodzaju piaskownicą, w której „bawi” się programista na swoim komputerze i w swoim środowisku developerskim. Dlatego zmiany, które realizuje w ramach lokalnego repo nie wpływają na repozytorium zdalne (Remote repository), do momentu wysłania zmian poleceniem Push.

Łatwizna! Czyli w lokalnym repozytorium znajdują się modyfikacje i zmiany tylko w ramach roboczego komputera… lokalnie.

Tak! Nie jest to specjalnie skomplikowane, prawda? Tylko co dalej? Wiesz może gdzie jest i jak to miejsce zlokalizować na dysku? Mała podpowiedź… kryje się w katalogu o nzawie .git. 🤫

Jak znaleźć katalog .git?

Katalog .git znajduje się w każdym projekcie, który bazuje na systemie kontroli wersji Git i można go zlokalizować w głównym katalogu wersjonowanego projektu. Jeżeli nie widzisz go w strukturze katalogów, a korzystasz z systemu Windows, prawdopodobnie jest ukryty. Przede wszystkim włącz widoczność ukrytych zasobów w eksploratorze plików Windows lub przejdź do katalogu przez terminal/konsolę i zweryfikuj jego zawartość jeszcze raz.

Struktura katalogu .git, co w nim jest?

Na wstępie warto zaznaczyć, że katalog ten tworzy się automatycznie przy każdym „inicie” projektu. Niezależnie od tego czy repozytorium tworzy się lokalnie, czy pobiera się ze zdalnego, zewnętrznego źródła.

Struktura

Poniżej przedstawiam podstawową wersję struktury lokalnego repozytorium. Pamiętaj, że może się ona delikatnie różnić, w zależności od wersji Gita lub etapu na jakim projekt i repozytorium się znajdują.

jak działa git - struktura
Przykładowa struktura w katalogu .git

Przeznaczenie katalogów i plików

Katalogi

  • hooks – w tym katalogu definiuje się skrypty dedykowane dla Gita, które można wykorzystywać w procesie wytwarzania oprogramowania. Skrypty posiadają rozszerzenie .sample, dlatego aby zacząć z nich korzystać, wspomniane rozszerzenie należy usunąć, a plik dostosować do własnych potrzeb. Każdy plik odpowiada za inny etap w całym flow wersjonowania projektu i uruchamia się w innym momencie.
  • info – katalog ten przechowuje plik exclude. Jest on wykorzystywany do definiowania jakie pliki lub katalogi mają być pomijane przez Gita podczas procesu wersjonowania. Dodanie odpowiedniego wpisu do tego pliku sprawi, że wskazane miejsce stanie się „niewidzialne”, dzięki czemu plik bądź katalog nie będzie się pojwiać jako kandydat do wersjonowania. Jest to pewnego rodzaju alternatywa dla pliku .gitignore. Trzeba mieć jednak na uwadze, że działa w ramach lokalnego komputera i nie podlega wersjonowaniu.
  • logs – przetrzymywane są tutaj informacje dotyczące historii commitów zrealizowanych w projekcie. Każdy commit posiada swój unikalny identyfikator w formie sumy kontrolnej (SHA).
  • objects – jest to serce katalogu .git i całego, lokalnego repozytorium, które w pewnym sensie pełni rolę bazy danych. Są tutaj informacje o tym co się znajduje w projekcie i jakie są między obiektami relacje. W „bazie” znajdują się następujące typy obiektów:
    commit – ma informacje powiązane z obiektem tree, autorem, datą i wiadomością (message).
    tree – posiada po jednej linii dla każdego pliku lub podkatalogu, gdzie każda linia ma informacje o uprawnieniach do pliku, typ obiektu, skrót SHA i nazwę pliku.
    blob – przechowuje zawartość plików z projektu (blob = binary large object).
    tag – zawiera hash oznaczonego obiektu, typ (zazwyczaj jest to commit), nazwę, datę oraz autora.
  • refs – główna kopia dla referencji, które znajdują się w repozytorium projektu.

Pliki

  • config – przechowuje konfigurację związaną z repozytorium. Można tam znaleźć np. informacje o użytkowniku (nazwa + email), który modyfikuje projekt i wysyła zmiany, link do zdalnego repozytorium, itd.
  • description – w tym miejscu możesz zdefiniować opis wersjonowanego projektu.
  • FETCH_HEAD – przechowuje informacje o gałęzi, która została w ostatnim czasie zaktualizowana przez polecenie git fetch.
  • HEAD – zawiera informacje na temat gałęzi, na której użytkownik aktualnie się znajduje.
  • index – posiada informacje o zmodyfikowanej zawartości projektu, zaindeksowanej przez Gita, która nie została „wysłana” do lokalnego i zdalnego repozytorium.
  • packed-refs – spakowana forma „uśpionych” referencji, znajdujących się w projekcie.

Podsumowanie

Podsumowując, co warto zapamiętać? 🤔

  1. Lokalne repozytorium możesz znaleźć w katalogu .git.
  2. Pliki projektu i ich zawartość Git przechowuje w katalogu objects, w formie blobów.
  3. Każdy obiekt wchodzący w skład repozytorium Gita, posiada unikalny identyfikator w postaci sumy kontrolnej – SHA.

W artykule zagłębiamy się delikatnie w niższą warstwę Gita, o której nie mówi się zbyt często, przez co wiedza ta jest mało popularna. Mam więc nadzieję, że te informacje były dla Ciebie wartościowe i zwiększyły Twoją świadomość korzystania z repozytorium Gita.

Na koniec przypominam, że więcej informacji na ten temat można znaleźć w poniższym filmie oraz w całej naszej serii poświęconej Gitowi.

Dziękuję Ci za poświęcony czas

Jeżeli chcesz być na bieżąco z artykułami i jesteś ciekawy co będzie dalej, daj lajka na naszym profilu FB, a przede wszystkim zapisz się do newslettera! Nie zapomnij również o naszej, prężnie rozwijającej się, grupie na Discordzie. Spodobał Ci się artykuł? Może zaciekawią Cię inne wpisy na naszym blogu. Pamiętaj, że można nas znaleźć również na YouTube!

Pozdrawiam i życzę miłego dnia!  🙂

dziękuję
3 1 vote
Oceny

Powiązane wpisy

Subscribe
Powiadom o
guest
0 komentarzy
Inline Feedbacks
View all comments

Strona wykorzystuje cookies i przetwarza dane zgodnie z zasadami opublikowanymi w Polityce Prywatności. Jeżeli nie wyrażasz zgody na przetwarzanie danych, zmień ustawienia swojej przeglądarki. Wybierając "OK", zgadzasz się na warunki przetwarzania. OK Więcej