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

«В чем разница между git pull и git fetch?» — вопрос из категории Git, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

git pull — это комбинация двух команд: git fetch + git merge. Она не только загружает изменения, но и автоматически сливает (merge) их с вашей текущей веткой, что может привести к конфликтам слияния.

Практическое использование:

# 1. Сначала проверяю, что пришло с сервера, без риска
$ git fetch origin

# Смотрю разницу между локальной веткой и origin
$ git log --oneline main..origin/main

# 2. Если изменения безопасны, сливаю их
$ git pull origin main

Я предпочитаю использовать fetch, а затем merge или rebase вручную, чтобы контролировать процесс интеграции изменений, особенно в командной работе.