Как выполнить удаленный checkout в Git [пошаговая инструкция]

Вы новичок в команде и вам было поручено проверить удаленную ветку из репозитория кода Git? Будь то крупное предприятие или компактная команда, владение удаленными ветками Git является ключом к безупречному сотрудничеству над кодом. В этом руководстве мы рассмотрим процесс извлечения кода из удаленного репозитория Git, сосредотачиваясь на команде ‘git checkout remote branch’.

Not a reader? Explore this related video tutorial!

Not seeing the video? Ensure your ad blocker is disabled.

Предварительные требования

  • В данном руководстве используется версия 2.30 Git SCM (управление исходным кодом) на Windows 10, хотя оно совместимо с любой ОС, поддерживаемой Git.

Другие возможные способы установки для Windows включают Chocolatey и Git4Win.

Понимание удаленной ветки

Репозитории Git ведут учет последовательности связанных коммитов внутри ветки. По умолчанию коммит находится в текущей активной ветке, обычно называемой main или master.

A remote branch is a branch located in a remote Git repository. These remote repositories, termed as “remotes,” are the destinations your local Git repository will scout for external commit updates once set up.

Откройте доступные ветви с использованием команды Git branch. Ветвь, отмеченная звездочкой (*), является активной. Нижеперечисленные ветви являются исключительно локальными, поскольку удаленные ветви еще не были получены.

git branch
List of local branches shown from the git branch command.

Освоение команды Git Checkout Remote Branch

Предположим, у вас есть локальный репозиторий Git, и возникает необходимость сотрудничать с другими разработчиками. Здесь на сцену выходит команда Git checkout, позволяя вам извлекать последние коммиты из удаленной ветви на удаленном репозитории Git.

Как только удаленная ветвь настроена, Git будет отражать удаленную ветвь, а не только локальную ветвь. Ниже приведен пример команды git checkout remote <branch>.

git checkout remote main

Клонирование удаленного репозитория Git

Теперь, когда у вас есть существующий репозиторий в вашем распоряжении, пришло время погрузиться в него. Следуйте указанным ниже шагам, чтобы клонировать удаленный репозиторий в локальную папку на вашем компьютере.

1. Часто проще клонировать удаленный репозиторий через HTTPS URL, чем через SSH, чтобы избежать проблем с сертификатами и брандмауэрами.

  • Перейдите в репозиторий на GitHub.
  • Нажмите кнопку Code и выберите HTTPS.
  • Щелкните по значку Clipboard рядом с ссылкой, чтобы скопировать URL в буфер обмена.
Locating the HTTPS clone URL in GitHub.

2. После копирования HTTPS-URL в буфер обмена откройте интерфейс командной строки с использованием предпочтительной CLI, такой как Командная строка Windows или Windows Terminal.

3. Перейдите в папку, где вы хотите разместить клонированный репозиторий. В этом руководстве используется папка git в домашнем каталоге, как показано на скриншотах. Выполните следующую команду для клонирования репозитория, которая создает подпапку с удаленным репозиторием.

# GitHub git clone https://github.com/Adam-the-Automator/git-checkout-remote-branch
Cloning a remote repository to the local machine.

4. Перейдите в клонированный репозиторий с помощью команды cd git-checkout-remote-branch.

Выполните следующую команду статуса, чтобы убедиться, что репозиторий был успешно клонирован. Команда Git status раскрывает различия между локальной и удаленной ветвями, помогая определить, подключена ли ваша ветвь и обновлена! Удаленный репозиторий Git по умолчанию называется origin и предварительно установлен в основную удаленную ветвь main. git status

git status
Checking a repositories status.

Для большинства современных программ Git main является основной веткой по умолчанию. Вы можете столкнуться с более старым приложением, которое использует master в качестве имени своей основной ветки, но оба эти имени функционально идентичны. В этом руководстве используются ветки с именами main, RemoteBranch, SomeBranch и AnotherBranch.

Что такое удаленный репозиторий Git и как отслеживать удаленные ветки

Клонирование репозитория автоматически создает ссылку на удаленный источник, известный как удаленный. Эта ссылка используется для проверки новых коммитов или отправки новых изменений в удаленный репозиторий.

A Git repository itself may have multiple remotes, but a branch can only reference a single remote.

Отслеживание удаленной ветки устанавливает отношения с локальной веткой. Это отношение позволяет легко отправлять или получать коммиты из удаленной ветки в локальную ветку. Более того, отслеживаемая ветка определяет, насколько впереди или позади в коммитах локальная ветка от удаленной.

Перечисление удаленных репозиториев Git

Во-первых, убедитесь, что репозиторий, с которым вы работаете, имеет какие-либо удаленные репозитории Git. Для этого просмотрите удаленные репозитории Git в своем репозитории с помощью команды git remote, как показано ниже. В этом случае отображаются два удаленных репозитория, origin и remote2.

git remote
Viewing a repositories two configured remotes.

Два дополнительных отслеживаемых удаленных репозитория названы origin и remote2, где ваши удаленные могут отличаться.

Чтобы получить более подробную информацию о настроенных удаленных репозиториях, добавьте ключ v для отображения полного URI удаленного репозитория Git.

git remote -v
Viewing verbose details about repo remotes.

Возможно, вы задаетесь вопросом, почему разные URI для операций fetch и push. В некоторых рабочих процессах Git можно проверять обновления репозитория по другому URI, чем отправлять изменения. Это называется треугольным рабочим процессом.

Просмотр доступных удаленных веток

Отобразите все доступные ветки, как локальные, так и удаленные, в вашем репозитории с помощью команды branch. Чтобы отображать также удаленные ветки, добавьте ключ all, как показано ниже.

git branch --all

На изображении ниже показан ожидаемый удаленный репозиторий origin, используемый в этом руководстве. Однако это изображение не включает все ветки из удаленного репозитория с именем Remote2.

Viewing all known branches in a repo (including remotes).

Если ветка на вашем удаленном репозитории не отображается в списке веток, вам необходимо обновить список доступных удаленных веток, как описано в следующем разделе.

Обновление доступных удаленных веток

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

Команда fetch подключается к удаленному репозиторию, извлекая список всех доступных веток. После выполнения команды git fetch просмотрите ваши текущие отслеживаемые ветки, чтобы убедиться, что удаленная ветка теперь видна, как показано ниже.

# Получить доступные удаленные ветки
git fetch

# Проверить, что все ветки теперь доступны в локальном репозитории Git
git branch --all

Ниже ветка remotes/origin/RemoteBranch теперь видна в списке доступных удаленных веток после выполнения команды git fetch.

Using git fetch to update the list of available remote branches.

Команда fetch проверяет только наличие обновлений из удаленного репозитория, который в настоящий момент отслеживается в текущей ветке. Чтобы Git проверял обновления из всех удаленных репозиториев в репозитории, независимо от статуса отслеживания, добавьте параметр all.

git fetch --all

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

# Список доступных веток в локальном репозитории Git
git branch --all
# Извлечь доступные ветки из remote2
git fetch Remote2
# Проверить, что ветка remote2, main, теперь доступна
git branch --all
Fetching main from remote2 with the git fetch command.

В любое время, когда вы проверяете удаленные обновления с помощью git fetch, git pull или git push, Git сравнивает коммиты с удаленной веткой. Локальные ветки могут отслеживать любую удаленную ветку Git. Кроме того, несколько локальных веток могут быть настроены на отслеживание одной и той же удаленной ветки.

Просмотр отслеживаемой удаленной ветки каждой ветки

Чтобы увидеть отслеживаемую удаленную ветку наряду с соответствующей локальной веткой, используйте параметр vv с командой git branch. Результаты команды отображают список удаленных и локальных веток в формате [<remote>/<branch>], как показано ниже.

git branch -vv
Listing remote tracking of all local branches.

Изменение отслеживаемой удаленной ветки ветки

Может возникнуть необходимость изменить вашу локальную ветку для отслеживания другой удаленной ветки. Чтобы установить вашу текущую ветку для отслеживания определенной удаленной ветки, используйте параметр u, как показано ниже.

git branch -u Remote2/main
Setting what remote to track for the current branch.

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

При создании новых веток в удаленном репозитории Git может потребоваться выполнить операцию проверки git checkout remote branch. Операция проверки ветки удаленного репозитория выполняется с помощью команды checkout.

Если следующие условия выполняются, Git автономно определит правильный удаленный репозиторий, загрузит локальную копию удаленной ветки и установит локальную копию для отслеживания удаленной ветки. Проверьте, что следующие условия не выполняются с помощью результатов команды git branch --all.

  • A local branch with the same name does not already exist.
  • Отсутствуют несколько удаленных, использующих одно и то же имя удаленной ветки.

Для выполнения операции git checkout для удаленной ветки используйте команду git checkout и введите имя удаленной ветки, как показано ниже.

git checkout RemoteBranch
Creating a local branch from a remote branch with git checkout.

Если в вашем локальном репозитории уже есть локальная ветка с тем же именем, добавьте параметр b, чтобы указать альтернативное имя локальной ветки перед веткой для проверки.

git checkout -b AnotherBranch origin/RemoteBranch
Creating a local copy of a remote branch with an alternate local branch name.

Если в вашем локальном репозитории есть несколько удаленных с тем же именем ветки, укажите, какой удаленный и какую ветку отслеживать для локальных коммитов.

git checkout --track origin/RemoteBranch
Creating a local copy of a remote branch with tracking enabled.

Возможно, будущие версии Git будут предпочитать использование команды git switch для изменения и создания веток. Команда Git switch предназначена только для веток, в то время как команда git checkout имеет много возможностей. Иршад С. написал хороший вводный материал по рационалу, если вы хотите узнать больше об этом.

Отправка локальной ветки на удаленный репозиторий

После создания локальной ветки, не имеющей соответствующей удаленной ветки для отслеживания, вы можете отправить ветку на удаленный сервер с помощью команды git push . Самый простой способ создать новую ветку на вашем предпочтительном удаленном сервере – использовать параметр u.

Параметр u, использованный ранее, требует указания аргументов имени репозитория и исходной ветки. Указав только HEAD в качестве имени исходной ветки, Git понимает, что нужно использовать текущее локальное имя ветки как имя на удаленном сервере, в данном случае – NewBranch.

# Переключение на ветку NewBranch
git checkout -b NewBranch
# Создание ветки NewBranch на удаленном сервере
git push -u origin HEAD
# Проверка наличия веток на удаленном сервере
git branch -vv
Pushing a local branch to an upstream remote named origin with the same name as local.

HEAD – это ярлык, который просто означает текущую ветку. Вы можете отправить другие ветки на удаленный сервер и настроить отслеживание, используя их имена вместо HEAD.

Иногда имя текущей локальной ветки не совпадает с именем удаленной ветки. Чтобы использовать другое имя, укажите желаемое имя ветки после источника, разделив двоеточием, как показано ниже.

# Создание текущей ветки на удаленном сервере с именем AnotherBranch
git push -u origin HEAD:AnotherBranch
# Проверка того, что локальная ветка NewBranch теперь существует как AnotherBranch на удаленном сервере
git branch -vv
Pushing a local branch to an upstream remote named origin with an alternate remote branch name.

Следующие шаги и дополнительные ресурсы Git

Просмотрев основы Git, управление удаленными репозиториями и выполнение команды git checkout remote branch, вы теперь оборудованы обширными знаниями, которые помогут избежать будущих трудностей. Шаги по проверке удаленной ветки в Git и рекомендованные практики, которые были представлены, будут служить вам бесценными ресурсами впереди.

Если вы хотите более подробно изучить другие аспекты управления репозиторием Git, рекомендуются следующие ресурсы:

  • A primer on detached heads: Discover scenarios where a detached HEAD is beneficial or inadvertent, and how to handle it.
  • Git switch: Команда, посвященная работе с ветками, в отличие от многофункциональной команды Git checkout.

Source:
https://adamtheautomator.com/git-checkout-remote-branch/