Перейти к содержимому

git pull

Определение

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

gitpull

Использование git pull

Команда git pull — одна из команд, участвующих в процессе «синхронизации». Эти команды работают с удалёнными ветками, которые настраиваются с помощью команды git remote. Коммиты загружаются с помощью git push, а скачиваются с помощью git fetch и git pull. После внесения изменений в обоих случаях для интеграции изменений используется git merge. И git fetch, и git pull используются для скачивания содержимого из удалённого репозитория. Команда git fetch не требует обязательного слияния изменений в репозиторий, тогда как git pull не только скачивает удалённое содержимое, но и сливает его с текущей рабочей копией.

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

Чтобы понять процесс pull и слияния, рассмотрим следующий пример. Существует репозиторий с веткой master и удалённым репозиторием origin. Команда git pull скачивает изменения с точки, в которой локальная и мастер-ветки разошлись. На иллюстрации показано, что этой точкой является E. Здесь вы видите удалённые коммиты A, B и C, которые будут получены с помощью git pull. Затем будет создан новый локальный коммит слияния с содержимым новых разошедшихся удалённых коммитов.

gitpull1

На иллюстрации показан новый коммит H, который содержит всё содержимое коммитов A, B и C с объединённым сообщением в журнале.

gitpull2

Использование git pull с опцией --rebase применяется для слияния вместо git merge.

gitpull3

Основные опции

КомандаОписание
git pull <remote>Загружает содержимое удалённого репозитория и напрямую сливает его с локальной копией (эквивалентно git fetch <remote>, за которым следует git merge origin/<current-branch>).
git pull --no-commit <remote>Загружает содержимое удалённого репозитория, но не создаёт коммит слияния.
git pull --rebase <remote>Интегрирует удалённую ветку с локальной.
git pull --verboseПоказывает загруженное содержимое и детали слияния, выводя подробный вывод во время выполнения pull.

Примеры

Вызов git pull без аргументов загружает и сливает изменения из ветки upstream, настроенной для текущей ветки. HEAD — это ссылка, указывающая на текущую ветку.

git pull

bash
git pull

Получение изменений из конкретной ветки удалённого репозитория:

git pull для удалённых репозиториев

bash
git pull <remote> <branch>

Эта команда загрузит и сольёт изменения из указанной ветки удалённого репозитория.

Например, если вы хотите получить изменения из ветки develop удалённого репозитория origin, используйте следующую команду:

bash
git pull origin develop

Получение изменений из удалённого репозитория и применение ребаза ваших изменений поверх них:

git pull через ребааз

bash
git pull --rebase

Эта команда загрузит изменения из удалённого репозитория и выполнит ребааз ваших локальных изменений поверх них, вместо их слияния. Это может быть полезно, если вы хотите сохранить линейную историю коммитов и избежать коммитов слияния.

Получение изменений из удалённого репозитория без автоматического слияния:

git pull --no-commit

bash
git pull --no-commit

Эта команда загрузит изменения из удалённого репозитория, но не будет автоматически сливать их с вашей локальной веткой. Вместо этого изменения останутся в качестве подготовленных (staged) изменений, которые вы можете просмотреть и закоммитить вручную.

Практика

Какие из следующих утверждений о команде 'git pull' являются верными?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.