git push -u origin branch-name
отправляет локальную ветку branch-name
на удаленный репозиторий origin
и настраивает отслеживание этой ветки. Флаг -u
(сокращение от --set-upstream
) связывает локальную ветку с удаленной, позволяя использовать git pull
и git push
без указания ветки, а также показывает статус расхождения между локальной и удаленной ветками.
Команда git push -u origin branch-name
выполняет несколько важных действий, связанных с отправкой локальной ветки на удаленный репозиторий и настройкой отслеживания:
git push
: Основная команда для отправки (загрузки) изменений из вашей локальной ветки (branch-name
) на удаленный репозиторий. Без указания опций, она может сработать только если локальная ветка уже связана с удаленной (и настроено отслеживание).
origin
: Это псевдоним (remote) для удаленного репозитория. По умолчанию, origin
обычно указывает на главный удаленный репозиторий, с которого вы клонировали проект. Это как бы "адрес" того места, куда вы хотите отправить свои изменения.
branch-name
: Имя вашей локальной ветки, которую вы хотите отправить на удаленный репозиторий.
-u
(или --set-upstream
): Самая важная часть. Эта опция устанавливает "upstream" ссылку (связь) между вашей локальной веткой branch-name
и удаленной веткой origin/branch-name
. Это означает, что Git "запоминает", что ваша локальная ветка связана с конкретной веткой на удаленном репозитории.
Что происходит в итоге:
branch-name
отправляется на удаленный репозиторий origin
, и создается (если еще не существует) ветка origin/branch-name
.branch-name
и удаленной веткой origin/branch-name
. Теперь Git знает, что они "отслеживают" друг друга.Последствия установки upstream:
git push
и git pull
(без указания origin branch-name
), Git будет знать, с какой удаленной веткой нужно синхронизироваться.git status
будет показывать, опережает ли ваша локальная ветка удаленную, или наоборот, и нужно ли делать git pull
или git push
.Когда использовать:
Обычно, вы используете git push -u origin branch-name
при первом отправлении новой локальной ветки на удаленный репозиторий. В последующих отправках достаточно будет просто git push
.
Пример:
Допустим, вы создали локальную ветку feature/new-button
. Чтобы отправить ее на GitHub (где origin настроен на ваш репозиторий) и установить отслеживание, вы используете: git push -u origin feature/new-button