← Все вопросы

Чем git pull отличается от git fetch и что использовать?

Задан 22 месяца назад1.1к просмотров2 ответа
10

Нужно подтянуть свежие изменения из репозитория, над которым работает команда. Вижу две команды — git pull и git fetch. В чём разница и какую выбрать, чтобы ничего не сломать?

2 ответа

12
✓ Принятый ответ — помог автору

Обе команды забирают изменения с сервера, но ведут себя по-разному.

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.

4

Короткая аналогия:

  • fetch — «принесли почту и положили на стол». Письма у тебя, но ты их ещё не открывал и не разложил.
  • pull — «принесли почту и сразу разложили по полкам». Быстро, но если разложили не туда — будет конфликт.

Новичку безопаснее привыкать к связке git fetch → посмотреть git status/git loggit merge. Меньше неожиданностей.

Ваш ответ

Войдите, чтобы ответить на вопрос.