Тур по Git
Работа с удалёнными репозиториями / Урок 4.6

git fetch — Загрузка без слияния

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

Как работает fetch

Когда вы выполняете git fetch, Git связывается с удалённым репозиторием и скачивает все новые коммиты. Эти коммиты сохраняются в ваших отслеживающих ветках (например, origin/main), оставляя локальные ветки нетронутыми.

До fetch:
  локальная:   A --- B --- C  (main)
  удалённая:   A --- B --- D --- E  (origin/main на сервере)

После fetch:
  локальная:   A --- B --- C  (main)      <- без изменений!
  отслеживающая:  A --- B --- D --- E  (origin/main)

Ваш main по-прежнему указывает на C. Новые коммиты D и E доступны в origin/main для просмотра.

Базовое использование

git fetch origin

Эта команда скачивает все ветки из удалённого репозитория origin. Можно также загрузить конкретную ветку:

git fetch origin main

Просмотр загруженных изменений

После fetch вы можете просмотреть изменения перед принятием решения о слиянии:

git log main..origin/main --oneline

Эта команда показывает коммиты, которые есть в origin/main, но отсутствуют в вашем локальном main. Также можно посмотреть, что именно изменилось:

git diff main origin/main

Fetch и Pull

КомандаСкачивает?Сливает?Безопасно?
git fetchДаНетОчень безопасно
git pullДаДаМогут возникнуть конфликты

Думайте о git pull как о комбинации git fetch + git merge. Если сомневаетесь — сначала сделайте fetch.

Попробуйте!

Потренируйтесь загружать и просматривать удалённые изменения перед слиянием:

  1. Проверьте текущий лог: git log --oneline
  2. Загрузите обновления из origin: git fetch origin
  3. Посмотрите, какие новые коммиты пришли: git log main..origin/main --oneline
  4. Сравните различия: git diff main origin/main
  5. Когда будете готовы, выполните слияние вручную: git merge origin/main
  6. Подтвердите слияние: git log --oneline

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

  • Перед началом работы — Загрузите изменения, чтобы увидеть обновления, а затем решите, как их интегрировать
  • Когда хотите просмотреть изменения — Fetch позволяет изучить изменения перед слиянием
  • В скриптах — Fetch предсказуем, потому что никогда не изменяет вашу рабочую директорию
  • Когда вы заняты другой работой — Fetch не нарушит текущую работу
🎯

Цель

Получите изменения из origin и затем слейте их в локальную ветку

Terminal
$

No commits yet. Run `git init` and create your first commit.