Komendy Plumbing i Porcelain
Ta książka opisuje jak używać Gita przy użyciu około 30 komend, takich jak checkout
, branch
, remote
itd. Ale ponieważ Git był początkowo tylko zestawem narzędzi do obsługi VCS, a nie pełnoprawnym systemem VCS, ma 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 "plumbing", a te bardziej przyjazne dla użytkownika to komendy "porcelain".
Pierwsze osiem rozdziałów książki opisywało praktycznie wyłącznie komendy "porcelain". Ale w tym rozdziale, będziesz używał głównie komend niskopoziomowych "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
HEAD
branches/
config
description
hooks/
index
info/
objects/
refs/
Możesz zobaczyć tam inne pliki, ale jest to nowy katalog zainicjowany przez git init
- standardowo właśnie to widzisz. Katalog branches
nie jest używany przez nowsze wersje Gita, a plik description
jest używany tylko przez program GitWeb, więc nie zwracaj na nie uwagi na razie. 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 rozdziale 7.
Pozostały bardzo istotne wpisy: pliki HEAD
i index
, oraz katalogi objects
i refs
. Są one podstawowymi częściami 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 częściach tego rozdziału dokładnie zobaczysz jak Git funkcjonuje.