Git Fetch: как и когда использовать?
Узнайте, как и когда использовать команду Git Fetch. В статье рассмотрены примеры, особенности работы с git fetch и git pull, а также практические советы для разработчиков.
1К открытий5К показов
Что делает git fetch?
Если коротко: обновляет локальную копию удаленного репозитория, не меняя состояние файлов проекта. При выполнении команды git fetch
Git связывается с удаленным репозиторием и загружает все новые коммиты и обновления, которые были добавлены с момента вашего последнего взаимодействия. Так, например, после выполнения этой команды появляется возможность переключаться на новые удаленные ветки.
Обычно при использовании гита через IDE или git-клиент не приходится переживать об этой команде, так как она выполняется неявно. При работе с гитом через консоль понимание принципов ее работы становится критически важным.
Вот ключевые функции команды git fetch
:
git fetch
обновляет информацию о всех удаленных ветках, чтобы вы могли видеть последние изменения и коммиты- эта команда не изменяет файлы и ветки в вашем рабочем каталоге, поэтому никакие «сюрпризы» возникнуть не должны
- она позволяет просмотреть все изменения и обновления перед их интеграцией, что помогает избежать конфликтов и ошибок при объединении веток
Основные опции и команды
Указание удаленного репозитория и веток
Обновление данных только из указанного удаленного репозитория <remote>
:
Обновление данных только из указанной ветки <branch>
удаленного репозитория <remote>
:
Опции для управления поведением команды
--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
.
Или когда вы хотите узнать о новых ветках, которые были созданы в удаленном репозитории:
Или когда вы хотите обновить вашу ветку с изменениями из удаленной ветки, не выполняя слияние:
Еще частый пример — вы хотите создать новую ветку на базе последних изменений основной ветки:
Представим, что к вам пришел стажёр с вопросами...
Помогите юному коллеге разобраться, какими командами можно закрыть его хотелки.
Полезные ссылки
Learngitbranching — интерактивная обучалка по использованию гита;
Pro Git — книга от Скотта Чакона (сооснователь GitHub и основатель GitButler) и Бена Штрауба;
Git How To — интерактивный тур, который познакомит вас с основами Git;
Руководство по git — объяснение основных функций гита от Евгения Сулейманова;
GitHub Learning Lab — интерактивный курс от GitHub.
1К открытий5К показов