Git Fetch: как и когда использовать?

Узнайте, как и когда использовать команду Git Fetch. В статье рассмотрены примеры, особенности работы с git fetch и git pull, а также практические советы для разработчиков.

1К открытий5К показов
Git Fetch: как и когда использовать?

Что делает git fetch?

Если коротко: обновляет локальную копию удаленного репозитория, не меняя состояние файлов проекта. При выполнении команды git fetch Git связывается с удаленным репозиторием и загружает все новые коммиты и обновления, которые были добавлены с момента вашего последнего взаимодействия. Так, например, после выполнения этой команды появляется возможность переключаться на новые удаленные ветки. 

Обычно при использовании гита через IDE или git-клиент не приходится переживать об этой команде, так как она выполняется неявно. При работе с гитом через консоль понимание принципов ее работы становится критически важным. 

Вот ключевые функции команды git fetch:

  1. git fetch обновляет информацию о всех удаленных ветках, чтобы вы могли видеть последние изменения и коммиты
  2. эта команда не изменяет файлы и ветки в вашем рабочем каталоге, поэтому никакие «сюрпризы» возникнуть не должны 
  3. она позволяет просмотреть все изменения и обновления перед их интеграцией, что помогает избежать конфликтов и ошибок при объединении веток

Основные опции и команды

Указание удаленного репозитория и веток

Обновление данных только из указанного удаленного репозитория <remote>:

			git fetch <remote>
		

Обновление данных только из указанной ветки <branch> удаленного репозитория <remote>:

			git fetch <remote> <branch>
		

Опции для управления поведением команды

--all — обновляет данные из всех удаленных репозиториев, настроенных для данного репозитория.

--dry-run — показывает, какие данные будут загружены, но не выполняет фактическое обновление.

--force или -f — принудительно обновляет данные, даже если это перезапишет существующие изменения.

--tags — загружает все теги из удаленного репозитория.

--prune — удаляет локальные ветки, которые были удалены в удаленном репозитории.

Опции для детализации вывода

--verbose или -v — показывает более подробную информацию о процессе выполнения команды.

--quiet или -q — отключает вывод сообщений о процессе выполнения команды.

Опции для управления референсами

--refmap=<refspec> — позволяет задать правила для сопоставления веток между локальным и удаленным репозиториями.

--depth=<depth> — ограничивает количество загружаемых коммитов указанным числом.

Git Pull VS Git Fetch

«Я выучил команду git pull, зачем мне знать какой-то еще git fetch?» — спросил меня один начинающий разработчик, когда мы обсуждали идею этой статьи. Действительно, в каких жизненных ситуациях знанием только git pull обойтись не получается? 

На самом деле все очень просто. Команда git pull — это последовательное выполнение двух команд: git fetch и get merge. Она обновляет данные в локальном репозитории (git fetch) и применяет эти изменения в вашей рабочей директории (git merge). 

Когда умение использовать git fetch необходимо?

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

			git fetch origin 
git log HEAD..origin/main —oneline

		

Или когда вы хотите узнать о новых ветках, которые были созданы в удаленном репозитории: 

			git fetch origin
git branch -r

		

Или когда вы хотите обновить вашу ветку с изменениями из удаленной ветки, не выполняя слияние:

			git fetch origin
git checkout feature
git reset --hard origin/feature
		

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

			git fetch origin
git checkout -b new-feature origin/main
		

Представим, что к вам пришел стажёр с вопросами...

Помогите юному коллеге разобраться, какими командами можно закрыть его хотелки.

Полезные ссылки

Learngitbranching — интерактивная обучалка по использованию гита;

Pro Git — книга от Скотта Чакона (сооснователь GitHub и основатель GitButler) и Бена Штрауба;

Git How To — интерактивный тур, который познакомит вас с основами Git;

Руководство по git — объяснение основных функций гита от Евгения Сулейманова;

GitHub Learning Lab — интерактивный курс от GitHub.

Следите за новыми постами
Следите за новыми постами по любимым темам
1К открытий5К показов