2011-11-19 18 views
119

Gdy uczę się o git, wciąż spotykam się z terminami HEAD, master, origin i nie jestem pewien, jakie są różnice. Jeśli rozumiem poprawnie, HEAD jest zawsze równy najnowszej wersji? A jeśli tak, to czy jest to najnowsza wersja całego repozytorium, czy konkretnej gałęzi czy znacznika? To jest takie mylące. Przeczytałem wiele tutoriali na ten temat i rzeczy takie jak rozgałęzianie/scalanie, ale wciąż nie mogę tego objąć.Jakie są koncepcje GIT HEAD, master, origin?

Odpowiedz

154

Bardzo polecam książkę "Pro Git" by Scott Chacon. Poświęć trochę czasu i naprawdę przeczytaj, podczas odkrywania rzeczywistego repozytorium git tak jak Ty.

HEAD: bieżące zatwierdzenie repo jest włączone. W większości przypadków HEAD wskazuje na ostatnie zatwierdzenie w Twoim oddziale, ale nie musi tak być. HEAD oznacza po prostu "na co obecnie wskazuje moje repozytorium".

W przypadku, gdy zatwierdzenie HEAD nie jest wierzchołkiem jakiejkolwiek gałęzi, jest to nazywane "odłączoną głową".

master: nazwa domyślnego odgałęzienia tworzonego przez git przy pierwszym tworzeniu repozytorium. W większości przypadków "master" oznacza "główny oddział". W większości sklepów wszyscy starają się opanować, a mistrz jest uważany za ostateczny pogląd na repozytorium. Ale często zdarza się, że gałęzie wyzwolenia są usuwane z mistrza do uwolnienia. Twoje lokalne repozytorium ma swój własny master, który prawie zawsze podąża za mistrzem zdalnego repo.

pochodzenie: domyślna nazwa, którą git nadaje twojemu głównemu zdalnemu repozytorium. Twoje pudełko ma swoje własne repozytorium i najprawdopodobniej wypchnie cię do jakiegoś zdalnego repo, do którego ty i wszyscy twoi współpracownicy popchniecie. To zdalne repozytorium prawie zawsze jest nazywane początkiem, ale nie musi tak być.

HEAD to oficjalne pojęcie w git. HEAD zawsze ma dobrze zdefiniowane znaczenie. master i origin to popularne nazwy używane zwykle w git, ale nie muszą.

+0

Co masz na myśli przez "HEAD naprawdę znaczy po prostu" na co wskazuje moje repo "." Jeśli istnieje wiele gałęzi w repozytorium, który z nich jest HEAD według Ciebie? jeśli istnieją 3 gałęzie (wraz z wzorcem), a zatwierdzenie potrzeby zostało wykonane w oddziale A, HEAD może nadal być w zatwierdzeniu "kapitana". Więc, która z nich jest poprawką, którą teraz wskazuje repo? – OK999

31

HEAD nie jest najnowszą wersją, jest to wersja aktualna wersja. Zwykle jest to najnowsza wersja bieżącego oddziału, ale nie musi tak być.

master to nazwa najczęściej podawana do głównej gałęzi, ale można ją nazwać wszystkim innym (lub nie może istnieć główna gałąź).

origin to nazwa powszechnie podawana dla głównego pilota. remote to kolejne repozytorium, z którego możesz pobierać i naciskać. Zwykle jest na jakimś serwerze, takim jak github.

+0

Czy możesz podać przykład, kiedy HEAD jest aktualne, ale nie najnowsze? Nigdy wcześniej tego nie widziałem. Czy masz na myśli, że może nie być najnowszym, ponieważ twoja filia znajduje się za oddziałem zdalnym, który śledzi? –

+9

@MattGreer: Jeśli wypiszesz coś starszego (np. Tag, np. 'Git checkout v1.1'), to HEAD zmieni się na zatwierdzenie tego tagu. To może nie być ostatni commit. –

10

Chociaż nie odpowiada to bezpośrednio na pytanie, dostępna jest darmowa darmowa książka, która pomoże Ci poznać podstawy o nazwie ProGit. Jeśli wolisz wersję z martwym drewnem do kolekcji bitów, możesz kupić ją od Amazon.

+3

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić tutaj istotne części odpowiedzi i podać link do odsyłacza. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. – nha

Powiązane problemy