Push и Pull

Тема дорожной карты · Изучи Git

Push и pull — ключевые команды git, которые позволяют взаимодействовать с удалёнными репозиториями. Эти команды обеспечивают эффективное управление версионностью кода, обеспечивая синхронизацию локальных изменений с удалёнными серверами и получение последних обновлений из внешних источников.

Так, команда git push отправляет локальные коммиты в удалённую ветку. В то же время, команда git pull выполняет два действия: сначала она получает последние изменения из удалённого репозитория (git fetch), а затем пытается их слить с локальной веткой (git merge). При этом, если настройка pull.rebase=true, git pull выполнит ребаз вместо слияния. Первый push новой ветки требует использования опции -u origin <branch> для установки upstream, что упрощает последующие push-запросы. Типичные подводные камни включают отказ push, когда на remote есть коммиты, которых нет у вас (в этом случае предпочтительнее использовать git pull --rebase); случайные «пузыри» merge от наивного pull. Для ясности предпочтительнее использовать git fetch + ручной merge/rebase, а для безопасной перезаписи удалённой истории используйте --force-with-lease вместо --force.

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

Push и pull используются для обмена изменениями между локальными и удалёнными репозиториями. Команда git remote -v выводит список всех настроенных удалённых репозиториев. Команда git fetch <remote> загружает объекты из указанного удалённого репозитория и обновляет локальные ссылки на эти объекты, не выполняя слияние. Команда git pull выполняет два действия: сначала она выполняет git fetch, а затем пытается слить полученные изменения с локальной веткой. Команда git push <remote> <branch> отправляет локальные коммиты в указанную удалённую ветку. По умолчанию, имя удалённого репозитория origin используется для основного удалённого репозитория. Удалённые ветки (origin/main) являются локальными зеркальными копиями состояния удалённого репозитория на момент последнего git fetch. Для работы с форками можно настроить несколько удалённых репозиториев: origin для своего форка и upstream для оригинального репозитория.

Когда применять

Команда git fetch предпочтительна перед git pull, если вы хотите увидеть изменения до слияния. Команда git push -u origin <branch> используется для установки upstream при первом push новой ветки. Команда git fetch --prune периодически используется для очистки ссылок на удалённые ветки, которые больше не существуют. Для работы с форками, рекомендуется установить upstream-remote на оригинальный репозиторий и регулярно синхронизировать его с оригинальным репозиторием.

Типичные ошибки

Типичные ошибки при использовании команд push и pull включают использование git push --force без опции --force-with-lease, что может привести к перезаписи коммитов тиммейта; использование git fetch без опции --prune, что приводит к накоплению старых ссылок на удалённые ветки; push личных веток в общую ветку origin, что может привести к появлению мусора в общем репозитории.

Связанные понятия

Полезные ресурсы