Чтобы извлечь ветку из удаленного репозитория Git и начать работать с ней локально, откройте Терминал в папке вашего репозитория, выполните fetch из нужного удаленного репозитория, а затем создайте локальную ветку, отслеживающую удаленную. Например, git fetch origin, за которой следует git switch --track origin/feature/login, создаст локальную ветку feature/login, связанную с origin/feature/login, и переключится на нее.

Откройте Терминал в репозитории

Откройте Терминал и перейдите в папку, содержащую ваш Git-репозиторий. В Терминале macOS оболочкой по умолчанию является zsh, хотя в вашей системе может использоваться другая оболочка. Приведенные ниже команды Git работают в любой из них; имена веток, содержащие метасимволы оболочки, следует брать в кавычки, чтобы оболочка их не интерпретировала. Руководство Apple по Терминалу

Если репозиторий уже открыт в редакторе кода, воспользуйтесь его встроенным терминалом, если он доступен. В противном случае в Терминале введите cd , перетащите папку репозитория из Finder в окно Терминала, чтобы вставить ее путь, и нажмите Return. Убедитесь, что вы находитесь в нужном репозитории, и проверьте наличие локальных изменений перед переключением веток:

git status --short
git remote -v

Команда git remote -v выводит список настроенных имен и URL-адресов удаленных репозиториев. В приведенных ниже командах используется origin — стандартное имя удаленного репозитория; замените его на фактическое имя, отображаемое на вашем Mac. Если удаленные репозитории не указаны, в данном репозитории в настоящее время нет настроенного источника для извлечения.

Извлеките удаленную ветку

Выполните:

git fetch origin

Извлечение (fetch) загружает коммиты и ссылки из удаленного репозитория и обновляет локальные удаленно-отслеживаемые ссылки в соответствии с конфигурацией выборки (fetch) репозитория. Сама по себе эта команда не переключает ваш рабочий каталог на ветку. При стандартной конфигурации извлеченные ветки из origin отображаются под такими именами, как origin/feature/login. В документации Git указано, что fetch обновляет ветки удаленного отслеживания, при этом точное сопоставление определяется спецификацией ссылок (refspec) выборки удаленного репозитория. Документация Git по fetch

Вы можете убедиться, что ветка видна локально, с помощью команды:

git branch --remotes

Найдите origin/feature/login в выводе. Если она отсутствует, убедитесь, что имя ветки и удаленный репозиторий указаны правильно, что у вас есть доступ к удаленному репозиторию и что его конфигурация выборки включает эту ветку. Успешный fetch все равно может не показать все ветки на сервере, если в репозитории используется ограниченный refspec.

Создайте локальную отслеживающую ветку и переключитесь на нее

Когда ветка удаленного отслеживания присутствует и вы хотите, чтобы локальная ветка имела такое же имя, выполните:

git switch --track origin/feature/login

Git создаст локальную ветку feature/login, настроит ее апстрим на origin/feature/login и переключит на нее ваше рабочее дерево. Отношение отслеживания позволяет таким командам, как git status, сообщать о состоянии локальной ветки относительно ее апстрима, а также предоставляет Git апстрим по умолчанию для таких операций, как git pull. Параметр --track задает этот апстрим; в таком формате Git берет имя локальной ветки из имени ветки удаленного отслеживания. Документация Git по switch

Если вам требуется другое имя для локальной ветки, укажите его явно:

git switch --track --create login-work origin/feature/login

Это создаст локальную ветку login-work, отслеживающую origin/feature/login. В версиях Git, поддерживающих более новую команду switch, --create является полной формой флага -c. Проверьте установленную версию с помощью git --version, если Git сообщает, что команда switch неизвестна; команда git switch появилась в Git 2.23. В этом случае используйте более старый эквивалент:

git checkout --track -b login-work origin/feature/login

Проверьте ветку и устраните распространенные ошибки

После переключения проверьте активную ветку и статус отслеживания:

git status -sb
git branch -vv

Вывод команды статуса должен идентифицировать локальную ветку и ее апстрим. В списке веток для login-work в качестве отслеживаемой ветки должна быть указана origin/feature/login.

Если Git сообщает о неоднозначности ветки, используйте полную форму remote/branch, показанную выше, вместо того чтобы полагаться на автоматическое угадывание. Сокращение git switch feature/login может автоматически создать отслеживающую ветку, если ровно в одном удаленном репозитории есть ветка с совпадающим именем, однако неоднозначность может возникнуть, если такое имя есть сразу в нескольких удаленных репозиториях. Документация Git по switch

Если в переключении отказано из-за того, что локальные изменения будут перезаписаны, остановитесь и просмотрите git status, прежде чем продолжать. Закоммитьте или надежно сохраните в stash изменения, которые вы хотите оставить; не выполняйте принудительное переключение и не сбрасывайте изменения, если не понимаете, что будет потеряно. Если локальная ветка с таким именем уже существует, переключитесь на нее осознанно или выберите другое локальное имя с помощью --create; не предполагайте, что существующая ветка уже отслеживает именно тот удаленный репозиторий, который вам нужен.

Рабочий процесс завершен, когда нужная локальная ветка извлечена (checked out), а ее апстрим указывает на требуемую удаленную ветку. Извлечение (fetch) обновляет данные вашего локального репозитория об удаленном источнике; создание отслеживающей ветки дает вам локальное пространство для работы, сохраняя при этом связь с удаленной веткой.

Источники