Ta strona stanowi analizę polecenia git checkout
. Obejmuje przykłady użycia i skrajne przypadki. W terminologii Git „checkout” to czynność polegająca na przełączaniu się między różnymi wersjami jednostki docelowej. Polecenie git checkout
działa na trzech różnych jednostkach: plikach, zatwierdzeniach i gałęziach. Oprócz definicji „do kasy”, wyrażenie „wyewidencjonowanie” jest często używane do sugerowania czynności wykonania polecenia git checkout
. W temacie Cofanie zmian widzieliśmy, jak git checkout
można wykorzystać do wyświetlenia starych zatwierdzeń. W większości tego dokumentu skupiamy się na operacjach pobierania na gałęziach.
Wyewidencjonowywanie gałęzi jest podobne do sprawdzania starych zatwierdzeń i plików, w którym katalog roboczy jest aktualizowany, aby pasował do wybranej gałęzi / wersji; jednak nowe zmiany są zapisywane w historii projektu – to znaczy nie jest to operacja tylko do odczytu.
Wyrejestrowywanie gałęzi
git checkout
umożliwia nawigację między gałęziami utworzonymi przez git branch
. Pobranie gałęzi aktualizuje pliki w katalogu roboczym, aby pasowały do wersji przechowywanej w tej gałęzi, i nakazuje Gitowi zapisanie wszystkich nowych zatwierdzeń w tej gałęzi. Potraktuj to jako sposób na wybranie linii rozwoju, nad którą pracujesz.
Posiadanie dedykowanej gałęzi dla każdej nowej funkcji to radykalna zmiana w stosunku do tradycyjnego przepływu pracy SVN. Pozwala to śmiesznie łatwo wypróbowywać nowe eksperymenty bez obawy o zniszczenie istniejącej funkcjonalności i umożliwia jednoczesną pracę nad wieloma niepowiązanymi funkcjami. Ponadto gałęzie ułatwiają również kilka wspólnych przepływów pracy.
Polecenie git checkout
może być czasami mylone z git clone
. Różnica między tymi dwoma poleceniami polega na tym, że clone działa w celu pobrania kodu ze zdalnego repozytorium, alternatywnie checkout działa w celu przełączania między wersjami kodu już w systemie lokalnym.
Użycie: Istniejące gałęzie
Zakładając, że repozytorium, w którym „pracujesz, zawiera istniejące wcześniej gałęzie, możesz przełączać się między nimi za pomocą git checkout
. Aby dowiedzieć się, które gałęzie są dostępne i jaka jest nazwa bieżącej gałęzi, execute git branch
.
Powyższy przykład pokazuje, jak wyświetlić listę dostępnych gałęzi, wykonując git branch
i przejdź do określonej gałęzi, w tym przypadku feature_inprogress_branch
.
Nowe gałęzie
Git checkout
działa ręka w rękę z git branch
. Polecenie git branch
może być użyte do stworzenia nowej gałęzi. Jeśli chcesz rozpocząć nową funkcję, tworzysz nową gałąź off przy użyciu git branch new_branch
. Po utworzeniu możesz użyć git checkout new_branch
, aby przełączyć się na tę gałąź. Ponadto polecenie git checkout
akceptuje argument -b
, który działa jako wygodna metoda, która utworzy nową gałąź i natychmiast się do niej przełączy. Możesz pracować nad wieloma funkcjami w jednym repozytorium, przełączając się między nimi za pomocą git checkout
.
Powyższy przykład jednocześnie tworzy i wyewidencjonowuje . Opcja
-b
to wygodna flaga, która nakazuje Gitowi uruchomienie git branch
przed uruchomieniem git checkout
.
Domyślnie git checkout -b
oprze new-branch
z aktualny HEAD
. Opcjonalny dodatkowy parametr gałęzi można przekazać do git checkout
. W powyższym przykładzie jest przekazywany, co następnie bazuje na
new-branch
na existing-branch
zamiast obecna HEAD
.
Przełączanie gałęzi
Przełączanie gałęzi jest prostą operacją. Wykonanie poniższego polecenia wskaże HEAD
na koniec .
Git śledzi historię operacji checkout w reflogu. Możesz wykonać git reflog
, aby wyświetlić historię.
Git Checkout a Remote Branch
Podczas współpracy z zespołem często używa się zdalnego repozytoria. Te repozytoria mogą być hostowane i udostępniane lub mogą być lokalną kopią innego współpracownika. Każde zdalne repozytorium będzie zawierało własny zestaw gałęzi. Aby pobrać zdalną gałąź, musisz najpierw pobrać zawartość oddziału.
W nowoczesnych wersjach Git możesz następnie pobrać zdalny oddział, taki jak lokalny.
Starsze wersje Gita wymagają utworzenia nowej gałęzi na podstawie remote
.
Dodatkowo możesz pobrać nową lokalną gałąź i zresetować ją do zdalnych gałęzi podczas ostatniego zatwierdzenia.
Odłączone HEADS
Teraz, gdy widzieliśmy trzy główne zastosowania git checkout
w gałęziach, ważne jest, aby omówić "detached HEAD”
stan. Pamiętaj, że HEAD
to sposób, w jaki Git odnosi się do bieżącego zrzutu. Wewnętrznie git checkout
po prostu aktualizuje HEAD
tak, aby wskazywało na określoną gałąź lub zatwierdzenie. Kiedy wskazuje na gałąź, Git nie narzeka, ale kiedy sprawdzasz zatwierdzenie, przełącza się w stan "detached HEAD”
.
To jest ostrzeżenie informujące, że wszystko, co robisz, jest „oderwane” od reszty rozwoju projektu. Jeśli miał rozpocząć tworzenie funkcji w odłączonym stanie HEAD
, nie byłoby gałęzi umożliwiającej o to. Kiedy nieuchronnie sprawdzasz inną gałąź (np. Aby scalić swoją funkcję), nie będzie możliwości odniesienia się do niej:
Chodzi o to, Twój rozwój powinien zawsze odbywać się na gałęzi – nigdy na odłączonym HEAD
. Dzięki temu zawsze masz odniesienie do nowych zatwierdzeń. Jeśli jednak patrzysz tylko na stare zatwierdzenie, nie ma znaczenia, czy jesteś w odłączonym stanie HEAD
, czy nie.
Podsumowanie
Ta strona skupiła się na użyciu polecenia git checkout
podczas zmiany gałęzi. Podsumowując, git checkout
, użyte na gałęziach, zmienia cel HEAD
ref. Może być używany do tworzenia oddziałów, przełączania gałęzi i kasowania oddziałów zdalnych. Polecenie git checkout
jest podstawowym narzędziem do standardowych operacji Git. Jest odpowiednikiem git merge
. Polecenia git checkout
i git merge
są kluczowymi narzędziami do włączania git workflows
.