Чем git pull отличается от git fetch и что использовать?
Нужно подтянуть свежие изменения из репозитория, над которым работает команда. Вижу две команды — git pull и git fetch. В чём разница и какую выбрать, чтобы ничего не сломать?
2 ответа
Обе команды забирают изменения с сервера, но ведут себя по-разному.
git fetch — только скачивает новые коммиты с сервера в твой локальный кэш, но НЕ трогает твою рабочую ветку. Ты можешь спокойно посмотреть, что прилетело, и только потом решить, что с этим делать:
git fetch
git pull — это fetch + merge за один шаг. Он скачивает изменения и сразу вливает их в твою текущую ветку:
git pull
По сути git pull = git fetch + git merge origin/main.
Что выбрать:
git pull— когда хочешь быстро обновиться и уверен, что конфликтов не будет (например, ты ничего локально не менял).git fetch+ просмотр +git merge— когда хочешь сначала посмотреть, что изменилось, и контролировать слияние. Это безопаснее.
После fetch глянуть, что нового, можно так:
git fetch
git log HEAD..origin/main --oneline
Частая ошибка: делать git pull с незакоммиченными изменениями. Если прилетит правка того же файла, git ругнётся «your local changes would be overwritten». Перед pull либо закоммить свои правки, либо спрячь их через git stash, а после pull верни git stash pop.
Короткая аналогия:
- fetch — «принесли почту и положили на стол». Письма у тебя, но ты их ещё не открывал и не разложил.
- pull — «принесли почту и сразу разложили по полкам». Быстро, но если разложили не туда — будет конфликт.
Новичку безопаснее привыкать к связке git fetch → посмотреть git status/git log → git merge. Меньше неожиданностей.