Как работает команда `git pull` и из каких этапов состоит?

«Как работает команда `git pull` и из каких этапов состоит?» — вопрос из категории Софт-скиллы, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Команда git pull — это сокращение для последовательного выполнения двух других команд. Она синхронизирует локальную ветку с удаленным репозиторием.

git pull = git fetch + git merge

  1. git fetch origin <branch_name>

    • Что делает: Загружает все новые коммиты, теги и ветки из указанной удаленной ветки (origin/main) в локальный репозиторий, но не вносит изменений в рабочую копию. Обновляет только служебные ссылки (например, origin/main).
  2. git merge origin/<branch_name>

    • Что делает: Сливает загруженные изменения из origin/<branch_name> в текущую активную локальную ветку. Создает новый коммит слияния (merge commit), если история разошлась.

Пример и эквивалент:

# Стандартный вызов pull
git pull origin main

# Это то же самое, что выполнить:
git fetch origin main
git merge origin/main

Ключевые нюансы и best practices:

  • Конфликты: Если в одних и тех же строках кода есть изменения и локально, и в удаленном репозитории, git merge вызовет конфликт, который нужно разрешить вручную.
  • git pull --rebase: Более чистый альтернативный подход. Вместо создания merge-коммита, он перебазирует (rebase) ваши локальные коммиты поверх обновленной удаленной ветки, сохраняя историю линейной.
    git pull --rebase origin main
  • Рекомендация: Перед pull рекомендуется убедиться, что все локальные изменения закоммичены или отложены (git stash).