Close

git checkout

Ta strona jest poświęcona poleceniu git checkout. Zawiera ona omówienie przykładów użycia i przypadków brzegowych. W terminologii Git wyewidencjonowanie (checkout) oznacza czynność przełączania między różnymi wersjami obiektu docelowego. Polecenie git checkout działa na trzech odrębnych typach obiektów: plikach, commitach i gałęziach. Niezależnie od definicji terminu„checkout” pojęcie „wyewidencjonowania” powszechnie stosuje się do określania czynności wykonania polecenia git checkout. W temacie Cofanie zmian omówiliśmy sposób użycia polecenia git checkout do wyświetlania starych commitów. Większa część niniejszego dokumentu będzie dotyczyła operacji wyewidencjonowania wykonywanych na gałęziach.

Wyewidencjonowanie gałęzi jest podobne do wyewidencjonowania starych commitów oraz plików w tym sensie, że katalog roboczy zostaje zaktualizowany zgodnie z wybraną gałęzią/rewizją, jednak nowe zmiany są zapisywane w historii projektu, co oznacza, że nie jest to operacja tylko do odczytu.


Wyewidencjonowanie gałęzi


Polecenie git checkout umożliwia poruszanie się między gałęziami utworzonymi za pomocą polecenia git branch. Wyewidencjonowanie gałęzi powoduje zaktualizowanie plików w katalogu roboczym zgodnie z wersją zapisaną w danej gałęzi i przekazanie do systemu Git polecenia zarejestrowania wszystkich nowych commitów w tej gałęzi. Można o tym myśleć, jak o sposobie wybierania linii prac programistycznych, nad którą pracujesz.

Dedykowana gałąź dla każdej nowej funkcji to ogromny postęp w porównaniu z tradycyjnym przepływem pracy SVN. Niesamowicie ułatwia wypróbowywanie nowych eksperymentów bez obawy o uszkodzenie dotychczasowej funkcji i umożliwia równoczesną pracę nad wieloma niepowiązanymi funkcjami. Ponadto gałęzie umożliwiają zastosowanie kilku przepływów prac opartych na współpracy.

Polecenie git checkout bywa czasami mylone z poleceniem git clone. Różnica między tymi dwoma poleceniami polega na tym, że polecenie „clone” powoduje pobranie kodu ze zdalnego repozytorium, natomiast polecenie „checkout” pozwala przechodzić między różnymi wersjami kodu, które znajdują się już w systemie lokalnym.

Okno konsoli
materiały pokrewne

Zaawansowany dziennik Git

Logo Bitbucket
POZNAJ ROZWIĄZANIE

Poznaj środowisko Git z rozwiązaniem Bitbucket Cloud

Korzystanie: istniejące gałęzie


Zakładając, że repozytorium, w którym pracujesz, zawiera już istniejące gałęzie, za pomocą polecenia git checkout możesz przełączać się między tymi gałęziami. Aby sprawdzić dostępne gałęzie oraz nazwę bieżącej gałęzi, wykonaj polecenie git branch.

$> git branch 
main 
another_branch 
feature_inprogress_branch 
$> git checkout feature_inprogress_branch

W powyższym przykładzie zaprezentowano, w jaki sposób wyświetlić listę dostępnych gałęzi poprzez wykonanie polecenia git branch, a następnie przełączyć się na wskazaną gałąź, w tym przypadku feature_inprogress_branch.

Nowe gałęzie


Polecenie git checkout współpracuje ściśle z poleceniem git branch. Za pomocą polecenia git branch można utworzyć nową gałąź. Aby rozpocząć pracę nad nową funkcją, tworzysz nową gałąź odchodzącą od gałęzi głównej, używając polecenia git branch new_branch. Po utworzeniu możesz przełączyć się na tę gałąź za pomocą polecenia git checkout new_branch. Ponadto polecenie git checkout przyjmuje argument -b, który stanowi udogodnienie, pozwalając utworzyć nową gałąź i od razu przełączyć się na nią. Możesz pracować nad wieloma funkcjami w pojedynczym repozytorium, przełączając się między nimi za pomocą polecenia git checkout.

git checkout -b <new-branch>

Powyższy przykład powoduje jednoczesne utworzenie i wyewidencjonowanie nowej gałęzi <new-branch>. Opcja -b jest flagą dostępną dla wygody, która nakazuje systemowi Git wykonanie polecenia git branch przed wykonaniem polecenia git checkout .

git checkout -b <new-branch> <existing-branch>

Domyślnie polecenie git checkout -b spowoduje utworzenie gałęzi new-branch odchodzącej w miejscu bieżącego wskaźnika HEAD. Do polecenia git checkout można przekazać opcjonalny parametr dodatkowej gałęzi. W powyższym przykładzie przekazano parametr existing-branch>, co spowodowało utworzenie gałęzi new-branch odchodzącej od gałęzi existing-branch, zamiast w miejscu bieżącej referencji HEAD.

Przełączanie gałęzi


Przełączanie gałęzi jest proste. Wykonanie poniższego polecenia spowoduje, że wskaźnik HEAD będzie wskazywał na końcówkę gałęzi .

git checkout <branchname>

Git śledzi historię operacji wyewidencjonowania w dzienniku reflog. Historię można wyświetlić za pomocą polecenia git reflog.

Polecenie „git checkout” w odniesieniu do gałęzi zdalnej


Podczas współpracy z zespołem często wykorzystuje się repozytoria zdalne. Te repozytoria mogą być hostowane i udostępniane lub mogą być kopią lokalną innego współpracownika. Każde repozytorium zdalne będzie zawierało własny zestaw gałęzi. Aby wykonać operację wyewidencjonowania na gałęzi zdalnej, najpierw należy pobrać zawartość gałęzi.

git fetch --all

W nowszych wersjach systemu Git można następnie wyewidencjonować gałąź zdalną tak samo jak gałąź lokalną.

git checkout <remotebranch>

Starsze wersje systemu Git wymagają utworzenia nowej gałęzi w oparciu gałąź remote.

git checkout -b <remotebranch> origin/<remotebranch>

Dodatkowo można wyewidencjonować nową gałąź lokalną i zresetować ją do ostatniego commita gałęzi zdalnych.

git checkout -b <branchname>
git reset --hard origin/<branchname>

Odłączone wskaźniki HEAD


Teraz, gdy poznaliśmy już trzy najważniejsze zastosowania polecenia git checkout w odniesieniu do gałęzi, ważne jest, aby omówić stan odłączonego wskaźnika — „detached HEAD”. Należy pamiętać, że wskaźnik HEAD jest sposobem odwoływania się do bieżącej migawki stosowanym w systemie Git. Wewnętrznie polecenie git checkout po prostu aktualizuje wskaźnik HEAD tak, aby wskazywał on określoną gałąź lub określony commit. Gdy wskazuje gałąź, system Git nie zgłasza żadnych problemów. Jednak w przypadku próby wyewidencjonowania commita, przełącza się w stan „detached HEAD”.

Jest to ostrzeżenie informujące, że wszystko, co robisz, jest „odłączone” od reszty prac programistycznych w ramach projektu. Jeśli zaczniesz pracować nad funkcją, gdy wskaźnik HEAD znajduje się w stanie odłączonym, nie będzie żadnej gałęzi, która pozwoliłaby do niej wrócić. Jeśli ostatecznie wyewidencjonujesz inną gałąź (np. w celu scalenia z nią swojej funkcji), nie będzie możliwości odwołania się do Twojej funkcji:

Porównanie dołączonego i odłączonego wskaźnika HEAD

Chodzi o to, że prace programistyczne powinny być zawsze prowadzone w gałęzi, a nigdy przy odłączonym wskaźniku HEAD. Dzięki temu masz pewność, że zawsze masz referencję do swoich nowych commitów. Jeśli jednak tylko przeglądasz stary commit, stan odłączenia wskaźnika HEAD nie ma tak naprawdę znaczenia.

Podsumowanie


Na tej stronie omówiono przede wszystkim użycie polecenia git checkout do zmiany gałęzi. Podsumowując, polecenie git checkout w odniesieniu do gałęzi zmienia element docelowy odniesienia HEAD. Można je wykorzystać do tworzenia gałęzi, przełączania między gałęziami i wyewidencjonowywania zdalnych gałęzi. Polecenie git checkout jest podstawowym narzędziem używanym standardowo podczas pracy w Git. Jest ono odpowiednikiem polecenia git merge. Polecenia git checkout i git merge są kluczowymi narzędziami umożliwiającymi korzystanie z przepływów pracy Git.


Udostępnij ten artykuł
Następny temat

Zalecane lektury

Dodaj te zasoby do zakładek, aby dowiedzieć się więcej na temat rodzajów zespołów DevOps lub otrzymywać aktualności na temat metodyki DevOps w Atlassian.

Ludzie współpracujący przy ścianie pełnej narzędzi

Blog Bitbucket

Ilustracja DevOps

Ścieżka szkoleniowa DevOps

Demonstracje funkcji z ekspertami Atlassian

Zobacz, jak Bitbucket Cloud współpracuje z Atlassian Open DevOps

Zapisz się do newslettera DevOps

Thank you for signing up