Struktura repozytorium Git ⋆ ALexHost SRL

Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills
15.01.2025

Struktura repozytorium Git

Kontrola wersji jest istotną częścią nowoczesnego rozwoju oprogramowania, a posiadanie odpowiednich narzędzi i usług może znacznie ułatwić zarządzanie projektami. AlexHost oferuje solidne i bezpieczne rozwiązania hostingowe VPS, idealne do hostowania repozytoriów Git. Dzięki funkcjom takim jak pełny dostęp root, dedykowane adresy IPv4, ultraszybka pamięć masowa NVMe i obsługa różnych systemów operacyjnych, AlexHost zapewnia płynną wydajność i niezawodność. Niezależnie od tego, czy jesteś indywidualnym programistą, czy częścią dużego zespołu, AlexHost zapewnia elastyczność i moc potrzebną do efektywnego zarządzania projektami.

Zrozumienie struktury repozytorium Git ma kluczowe znaczenie dla efektywnego zarządzania kodem źródłowym projektu, śledzenia zmian i współpracy z innymi.

Oto zestawienie podstawowych komponentów i struktury repozytorium Git:


1. Katalog roboczy

Katalog roboczy to miejsce, w którym znajdują się rzeczywiste pliki projektu. Kiedy klonujesz repozytorium Git, otrzymujesz kopię wszystkich śledzonych plików, które są umieszczane w katalogu roboczym. Jest to obszar, w którym aktywnie edytujesz pliki, wprowadzasz zmiany i dodajesz nową zawartość.

  • Zmodyfikowane pliki: Każdy plik edytowany w katalogu roboczym będzie uważany za zmodyfikowany do momentu jego wycofania lub zresetowania zmian.
  • Pliki nieśledzone: Pliki, które nie są jeszcze śledzone przez Git, będą wyświetlane w katalogu roboczym jako nieśledzone, dopóki nie zostaną wystawione i zatwierdzone.

2. Obszar postojowy (indeks)

Obszar przejściowy (zwany także indeksem) jest pośrednim miejscem, w którym zmiany w plikach są gromadzone przed zatwierdzeniem ich do repozytorium. Pliki lub zmiany są dodawane do obszaru przejściowego za pomocą polecenia git add. Zmiany w obszarze przejściowym będą częścią następnego zatwierdzenia.

  • Dodawanie zmian do obszaru przejściowego:
    git add
  • Wyświetlanie obszaru przejściowego: Możesz zobaczyć, co znajduje się w obszarze przejściowym za pomocą git status.

3. Katalog Git (folder .git)

Katalog Git, przechowywany w folderze .git, jest sercem każdego repozytorium Git. Zawiera on wszystkie istotne informacje o historii, konfiguracji i bieżącym stanie projektu. Katalog ten jest tworzony automatycznie podczas inicjalizacji lub klonowania repozytorium Git.

Kluczowe składniki katalogu .git:

  • HEAD: Plik wskazujący na bieżące zatwierdzenie w gałęzi.
  • Branches: Zawiera informacje o gałęziach w repozytorium.
  • Obiekty: Przechowuje wszystkie obiekty, takie jak commity, bloby (dane plików) i drzewa (struktura katalogów).
  • Refs: Zawiera odniesienia do commitów, w tym headów (gałęzi), tagów i gałęzi remote-tracking.
  • Config: Plik konfiguracyjny lokalnego repozytorium, w którym przechowywane są ustawienia takie jak piloty lub informacje o użytkowniku.
  • Logs: Przechowuje dzienniki wszystkich działań, takich jak zatwierdzenia, wyewidencjonowania i ponowne bazy.
  • Hooks: Niestandardowe skrypty, które mogą wyzwalać akcje przed lub po określonych zdarzeniach Git (np. commit, push).

4. Historia zobowiązań

Każde zatwierdzenie jest migawką repozytorium w określonym momencie. Zatwierdzenie zawiera zmiany w plikach wraz z metadanymi, takimi jak komunikat zatwierdzenia, autor i znacznik czasu. Zatwierdzenia tworzą historię projektu.

  • Zatwierdzenia są przechowywane w katalogu .git/objects.
  • Każde zatwierdzenie wskazuje na poprzednie zatwierdzenie (z wyjątkiem pierwszego), tworząc połączony łańcuch, który można wizualizować jako historię projektu.
git log # Wyświetl historię zatwierdzeń

5. Oddziały

Gałąź to wskaźnik do konkretnego zatwierdzenia, umożliwiający jednoczesną pracę nad różnymi wersjami projektu. Domyślnie Git rozpoczyna pracę z gałęzią o nazwie main (lub master w starszych wersjach).

  • Wskaźnik gałęzi: Gałęzie są po prostu wskaźnikami do zatwierdzenia. Utworzenie nowej gałęzi oznacza utworzenie wskaźnika do bieżącego zatwierdzenia, umożliwiając tworzenie nowych zatwierdzeń w tej gałęzi bez wpływu na inne gałęzie.
git branch <nazwa_gałęzi> # Utwórz nową gałąź git checkout <nazwa_gałęzi> # Przełącz na istniejącą gałąź
  • HEAD: Wskaźnik HEAD w Git wskazuje bieżącą gałąź lub zatwierdzenie, nad którym pracujesz. Zwykle wskazuje na najnowsze zatwierdzenie w bieżącej gałęzi.

6. Tagi

Tagi to odniesienia do konkretnych punktów w historii Git, często używane do oznaczania wersji wydania (np. v1.0, v2.0). W przeciwieństwie do gałęzi, tagi nie są aktualizowane wraz z nowymi zatwierdzeniami.

  • Lekkie tagi: Są to proste wskaźniki do zatwierdzenia, podobne do gałęzi.
  • Tagi z adnotacjami: Zawierają dodatkowe metadane, takie jak nazwa taggera, data i wiadomość tagu.
git tag v1.0 # Utwórz lekki tag git tag -a v1.0 -m “Version 1.0” # Utwórz tag z adnotacjami

7. Piloty

Remote w Git to odniesienie do kopii repozytorium, która jest hostowana w innym miejscu, często na platformach takich jak GitHub, GitLab lub Bitbucket. Piloty służą do współpracy, umożliwiając przesyłanie zmian do innych kopii repozytorium lub pobieranie z nich zmian.

  • Pochodzenie: Domyślnie główne zdalne repozytorium nosi nazwę origin.
git remote add origin # Dodaj zdalne repozytorium git fetch origin # Pobierz zmiany ze zdalnego git push origin main # Wypchnij zmiany do zdalnej gałęzi głównej

8. Obiekty w Git

Katalog obiektów Git (.git/objects) zawiera cztery podstawowe typy obiektów, które tworzą historię repozytorium:

  • Blob: Przechowuje rzeczywistą zawartość pliku.
  • Drzewo: Reprezentuje katalog, mapując nazwy plików na obiekty blob i podkatalogi (inne obiekty drzewa).
  • Commit: Przechowuje metadane o każdej zmianie (autor, data, wiadomość) i wskazuje na obiekt drzewa.
  • Tag: Wskazuje na zatwierdzenie i przechowuje informacje o taggerze i wiadomości (w przypadku tagów z adnotacjami).

9. Haki

Git umożliwia definiowanie niestandardowych skryptów (hooków), które mogą być uruchamiane na różnych etapach przepływu pracy Git. Skrypty te mogą być uruchamiane automatycznie po lub przed zdarzeniami takimi jak zatwierdzanie, wypychanie lub scalanie. Haki mogą wymuszać jakość kodu, uruchamiać testy lub uruchamiać potoki CI/CD.

Hooki są przechowywane w katalogu .git/hooks/.

  • Hak przed zatwierdzeniem: Uruchamiany przed utworzeniem zatwierdzenia.
  • Hak po zatwierdzeniu: Uruchamiany po utworzeniu zatwierdzenia.

10. Dzienniki

Git przechowuje dzienniki wszystkich działań w repozytorium, takich jak zatwierdzenia, wyewidencjonowania, scalenia i wycofania. Dzienniki te pomagają w debugowaniu i przeglądaniu działań podjętych w repozytorium.

  • Git Reflog: Przechowuje zapis wszystkich zmian we wskaźniku HEAD, umożliwiając odzyskanie po działaniach takich jak reset gałęzi.
git reflog # Wyświetl reflog, aby zobaczyć ostatnie działania

Podsumowanie struktury repozytorium Git

  • Katalog roboczy: Zawiera pliki i katalogi w ich bieżącym stanie.
  • Staging Area (Index): Miejsce, w którym zmiany są przechowywane przed zatwierdzeniem.
  • Katalog Git (.git): Przechowuje podstawowe dane, w tym obiekty, konfigurację i dzienniki.
  • Commits (zatwierdzenia): Zapis zmian z metadanymi, tworzący historię projektu.
  • Gałęzie: Wskaźniki do konkretnych commitów, które umożliwiają równoległy rozwój.
  • Tagi: Nazwane odniesienia do konkretnych commitów, zwykle do oznaczania wydań.
  • Remotes: Odniesienia do repozytoriów hostowanych gdzie indziej w celu współpracy.
  • Obiekty: Podstawowe komponenty Git, w tym bloby, drzewa i commity.

Zrozumienie tej struktury pozwala efektywnie poruszać się po repozytorium Git i zarządzać nim, zapewniając płynną współpracę i kontrolę wersji podczas tworzenia projektu.

Sprawdź swoje umiejętności we wszystkich naszych usługach hostingowych i otrzymaj 15% zniżki!

Użyj kodu przy kasie:

Skills