Menu
Coddy logo textTech

Git Fetch vs Pull

Последнее обновление

git fetch скачивает последние коммиты из удалённого репозитория, но оставляет вашу рабочую ветку ровно такой, какой она была. git pull выполняет то же самое скачивание, а затем сразу вливает эти коммиты в вашу текущую ветку. Коротко: git pull = git fetch + git merge.

Используйте fetch, когда хотите посмотреть, прежде чем действовать; используйте pull, когда готовы интегрировать изменения. Попробуйте оба в терминальном playground - настоящей оболочке в вашем браузере.

git fetch скачивает новые коммиты и обновляет только origin/main - ваша ветка ждёт; git pull сразу вливает их.

Бок о бок

Behaviorgit fetchgit pull
Скачивает удалённые коммитыДаДа
Изменяет вашу текущую веткуНетДа
Может вызвать конфликты слиянияНетДа
Эквивалентнотолько скачиваниеfetch + merge

Синтаксис

CommandWhat it does
git fetchСкачивает все удалённые изменения, без слияния
git fetch origin mainПолучает только одну ветку из удалённого репозитория
git pullСкачивает и вливает в текущую ветку
git pull --rebaseСкачивает, затем делает rebase ваших коммитов поверх
git log HEAD..origin/mainПосле fetch: посмотрите, что бы вы слили

Часто задаваемые вопросы о Git fetch vs pull

В чём разница между git fetch и git pull?
git fetch скачивает новые коммиты и обновляет ваши ветки удалённого отслеживания (такие как origin/main), но не изменяет вашу рабочую ветку. git pull выполняет тот же fetch, а затем вливает новые коммиты в вашу текущую ветку. То есть pull изменяет ваши файлы; fetch лишь обновляет ваше представление об удалённом репозитории.
Правда ли, что git pull - это просто fetch плюс merge?
Да. git pull - это сокращение для git fetch, за которым следует git merge полученной ветки в вашу текущую. С git pull --rebase вторым шагом становится rebase вместо merge, что сохраняет историю линейной.
Когда мне следует использовать fetch вместо pull?
Используйте git fetch, когда хотите просмотреть входящие изменения перед их интеграцией - например, git fetch, а затем git log HEAD..origin/main, чтобы точно увидеть, что нового. Используйте git pull, когда вы уже доверяете удалённым изменениям и просто хотите слить их в свою ветку.
Может ли git fetch когда-либо вызвать конфликты?
Нет. Fetch только обновляет ветки удалённого отслеживания; он никогда не трогает вашу рабочую ветку или файлы, поэтому не может вызвать конфликты слияния. Конфликты возникают только на этапе merge - который pull выполняет автоматически, а fetch нет.
Могу ли я потренироваться в этом онлайн?
Да. Откройте терминальный playground, чтобы выполнить git fetch и git pull в настоящей оболочке в вашем браузере - ничего устанавливать не нужно. Бесплатный интерактивный курс по Git от Coddy также пошагово охватывает работу с удалёнными репозиториями.
Coddy programming languages illustration

Изучайте Git с Coddy

НАЧАТЬ