Перейти к содержимому

git checkout

Определение

Команда git checkout переключает ветки или восстанавливает файлы рабочего дерева. Она работает с файлами, коммитами и ветками. Команда git checkout позволяет переключаться между несколькими функциями в рамках одного репозитория.

Проверка веток

Команда git checkout работает вместе с командой git branch. Она обновляет файлы в рабочем каталоге так, чтобы они соответствовали версии, сохранённой в этой ветке, и сообщает Git о необходимости записать все новые коммиты. Команду git checkout можно связать с git clone. Команда git clone используется для получения кода из удалённого репозитория, тогда как git checkout — для переключения версий кода в локальной системе.

Проверка существующих веток

Предположим, что есть репозиторий, содержащий уже существующие ветки. Если вы хотите переключаться между этими ветками, можно вызвать git checkout. Выполнение git branch покажет список доступных веток и имя текущей ветки.

git checkout branch

makefile
git branch
master
test_branch
feature_branch
git checkout feature_branch

Проверка новых веток

Команда git branch выполняется для создания новой ветки. Однако аргумент git checkout -b создаёт новую ветку и сразу переключает на неё:

git checkout -b

makefile
git checkout -b <new_branch>

В данном примере флаг -b указывает Git выполнить git branch <new_branch> перед вызовом git checkout <new_branch>.

git checkout -b new_branch existing_branch

makefile
git checkout -b <new_branch> <existing_branch>

Команда git checkout -b создаёт new_branch на основе текущего HEAD. В данном примере <existing_branch> будет использоваться как основа для new_branch вместо текущего HEAD.

Переключение веток

Выполнение следующей команды укажет HEAD на вершину <branchname>:

команда git checkout branch

makefile
git checkout <branchname>

Команду git reflog можно выполнить, чтобы просмотреть историю. Подробнее читайте в нашей статье о git reflog.

Проверка удалённых веток

При работе в команде часто используются удалённые репозитории. Каждый удалённый репозиторий может содержать собственные ветки. Чтобы проверить удалённую ветку, следует выполнить git fetch для получения её содержимого:

git checkout remote

makefile
git fetch --all

Современные версии Git позволяют проверять удалённую ветку так же, как локальную:

git checkout remote branches

makefile
git checkout <remote_branch>

В более старых версиях Git следует создать новую ветку на основе удалённой:

git checkout for remote branches

makefile
git checkout <remote_branch> origin/<remote_branch>

Затем создайте новую локальную ветку и сбросьте её к последнему коммиту удалённой ветки с помощью команды git reset:

команда git checkout

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

Detached HEADS

Состояние «Detached HEAD» позволяет проверять коммиты и изучать более старое состояние репозитория без создания локальной ветки. Команда HEAD обновляет git checkout, указывая на заданную ветку или коммит. Если HEAD указывает на ветку, проблем не возникает, но когда он указывает на коммит, система переходит в состояние «detached HEAD».

Состояние «Detached HEAD» — это предупреждение, которое сообщает, что ваша работа «отсоединена» от разработки проекта. Если вы разрабатываете функцию в состоянии «detached HEAD», ни одна ветка не позволит вам вернуться к ней. При проверке другой ветки вы не сможете сослаться на свою функцию:

git checkout

Разработка должна вестись в ветке, а не в состоянии «detached HEAD», чтобы обеспечить наличие ссылки на новые коммиты. Но если вы хотите посмотреть старый коммит, состояние «detached HEAD» не имеет особого значения.

Practice

Каковы функциональные возможности и особенности команды 'git checkout'?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.