Git
Chapters ▾ 2nd Edition

10.1 Mechanizmy wewnętrzne w Git - Komendy typu plumbing i porcelain

Być może przeskoczyłeś do tego rozdziału z poprzedniego, lub dotarłeś aż dotąd po przeczytaniu reszty książki – w każdym z tych przypadków, dowiesz się tutaj o tym w jaki sposób pracują wewnętrzne mechanizmy i ich implementacja w Git. Wiem, jak ważne jest poznanie tych rzeczy, aby zrozumieć jak przydatnym i potężnym narzędziem jest Git, jednak niektóre osoby wskazywały że może to wprowadzać zamieszanie i niepotrzebnie komplikować sprawy dla początkujących użytkowników. Dlatego zawarliśmy te informacje w ostatnim rozdziale w książce, tak abyś mógł go przeczytać w dowolnym momencie nauki. Decyzję zostawiamy Tobie.

Teraz, gdy jesteś już tutaj, rozpocznijmy. Po pierwsze, jeżeli nie jest to jeszcze jasne, podstawą Gita jest systemem plików ukierunkowanym na treść, z nałożonym interfejsem użytkownika obsługującym kontrolę wersji. Za chwilę dowiesz się co to oznacza.

We wczesnych fazach Gita (głównie przed wersją 1.5), interfejs użytkownika był dużo bardziej skomplikowany, ponieważ kładł nacisk na sam system plików, a nie funkcjonalności systemu kontroli wersji. W ciągu ostatnich kilku lat, interfejs został dopracowany i jest teraz tak łatwy jak inne; jednak często pokutuje stereotyp na temat pierwszych wersji UI, które były skomplikowane i trudne do nauczenia.

Warstwa systemu plików jest zadziwiająco fajna, dlatego właśnie opiszemy ją w tym rozdziale; następnie, nauczysz się na temat protokołów transportowych oraz zadań związanych z obsługą repozytorium z którymi być może będziesz miał do czynienia.

Komendy typu plumbing i porcelain

Książka ta opisuje jak używać Gita przy użyciu około 30 komend, takich jak checkout, branch, remote itp. Ale ponieważ Git był początkowo tylko zestawem narzędzi do obsługi VCS, a nie pełnoprawnym systemem VCS, ma on garść komend, które wykonują niskopoziomowe czynności i zostały zaprojektowane do łączenia ich w łańcuchy komend w stylu UNIX lub wywoływania z skryptów. Te komendy generalnie nazywane są komendami typu "plumbing", a te bardziej przyjazne dla użytkownika to komendy typu "porcelain".

Pierwsze dziewięć rozdziałów książki opisywało praktycznie wyłącznie komendy typu "porcelain". Ale w tym rozdziale, będziesz używał głównie niskopoziomowych komend typu "plumbing", ponieważ daje one dostęp do wewnętrznych mechanizmów Gita i pomagają pokazać jak i dlaczego Git robi to co robi. Te komendy nie zostały stworzone do ręcznego uruchamiania z linii komend, ale raczej aby mogły być użyte do budowania nowych narzędzi lub niestandardowych skryptów.

Kiedy uruchomisz git init w nowym lub istniejącym katalogu, Git stworzy katalog .git, w którym praktycznie wszystko czego używa Git jest umieszczone. Kiedy chcesz wykonać kopię zapasową lub sklonować repozytorium, skopiowanie tylko tego katalogu da Ci praktycznie wszystko czego potrzebujesz. Praktycznie cały ten rozdział dotyczy rzeczy, które są umieszczone w tym katalogu. Wygląda on tak:

$ ls -F1
HEAD
config*
description
hooks/
info/
objects/
refs/

Możesz zobaczyć tam inne pliki, ale jest to nowy katalog zainicjowany przez git init – standardowo właśnie to widzisz. Plik description jest używany tylko przez program GitWeb, więc nie zwracaj na nieego uwagi. Plik config zawiera ustawienia konfiguracyjne dotyczące danego projektu, a katalog info przechowuje globalny plik wykluczeń , który przechowuje ignorowane wzorce których nie chcesz mieć w pliku .gitignore. Katalog hooks zawiera komendy uruchamiane po stronie klienta lub serwera, które były omawiane w sekcji Git Hooks.

Pozostały bardzo istotne wpisy: pliki HEAD i (jeszcze nie utworzony) index oraz katalogi objects i refs. Stanowią one rdzeń Gita. Katalog objects przechowuje całą zawartość bazy danych, katalog refs przechowuje wskaźniki do obiektów commitów w danych (branches), plik HEAD wskazuje gałąź na której się znajdujesz, a plik index jest miejscem w którym przechowywane są informacje na temat przechowalni. W kolejnych sekcjach tego rozdziału dokładnie zobaczysz jak funkcjonuje Git.

scroll-to-top