В чём разница между `git pull` и `git fetch`?

git fetch скачивает изменения (коммиты, ветки, теги) из удалённого репозитория в ваш локальный репозиторий, не затрагивая ваши локальные ветки.

git pull это git fetch плюс git merge. Он скачивает изменения из удалённого репозитория и автоматически пытается слить их с вашей текущей рабочей веткой.


Разница между git pull и git fetch заключается в том, что они делают с локальной копией удаленного репозитория.

git fetch:

  • Загружает изменения (коммиты, ветки, теги) из удаленного репозитория в ваш локальный репозиторий.
  • Обновляет ваши remote-tracking branches (например, origin/main), но не изменяет ваши локальные ветки (например, main).
  • Вы можете рассматривать git fetch как способ узнать, что нового есть в удаленном репозитории, не затрагивая вашу локальную работу.
  • Это позволяет вам просмотреть изменения, прежде чем решать, как их интегрировать.

git pull:

  • Выполняет git fetch, а затем автоматически пытается слить (merge) или перебазировать (rebase) изменения из удаленной ветки в вашу текущую локальную ветку.
  • Это эквивалентно последовательному выполнению git fetch и git merge origin/main (или git rebase origin/main, в зависимости от конфигурации) для ветки main.
  • git pull - это более агрессивный способ синхронизации с удаленным репозиторием, поскольку он не только загружает изменения, но и пытается немедленно их интегрировать.
  • Автоматическое слияние может привести к конфликтам, которые вам придется разрешать.

Проще говоря:

  • git fetch = Скачать, но не трогать мои локальные файлы.
  • git pull = Скачать и попытаться слить (или перебазировать) в мои локальные файлы.

Когда использовать что:

  • Используйте git fetch, когда вы хотите увидеть, что изменилось в удаленном репозитории, прежде чем принимать решение о том, как интегрировать эти изменения. Это особенно полезно, когда вы работаете над важными изменениями и хотите избежать неожиданных конфликтов.
  • Используйте git pull, когда вы уверены, что хотите синхронизировать свою локальную ветку с удаленной, и вы готовы к возможным конфликтам слияния. Это может быть удобным для быстрых обновлений, но требует осторожности.

Важно: Прежде чем делать git pull, убедитесь, что у вас нет несохраненных изменений в вашей локальной ветке, иначе слияние может пройти неудачно или возникнут конфликты.

0