Что делает `git push -u origin branch-name`?

Команда git push -u origin branch-name отправляет локальную ветку branch-name на удаленный репозиторий origin и настраивает отслеживание этой ветки. Флаг -u (сокращение от --set-upstream) связывает локальную ветку с удаленной, позволяя использовать git pull и git push без указания ветки, а также показывает статус расхождения между локальной и удаленной ветками.

Команда git push -u origin branch-name выполняет несколько важных действий, связанных с отправкой локальной ветки на удаленный репозиторий и настройкой отслеживания:

  1. git push: Основная команда для отправки (загрузки) изменений из вашей локальной ветки (branch-name) на удаленный репозиторий. Без указания опций, она может сработать только если локальная ветка уже связана с удаленной (и настроено отслеживание).
  2. origin: Это псевдоним (remote) для удаленного репозитория. По умолчанию, origin обычно указывает на главный удаленный репозиторий, с которого вы клонировали проект. Это как бы "адрес" того места, куда вы хотите отправить свои изменения.
  3. branch-name: Имя вашей локальной ветки, которую вы хотите отправить на удаленный репозиторий.
  4. -u (или --set-upstream): Самая важная часть. Эта опция устанавливает "upstream" ссылку (связь) между вашей локальной веткой branch-name и удаленной веткой origin/branch-name. Это означает, что Git "запоминает", что ваша локальная ветка связана с конкретной веткой на удаленном репозитории.

Что происходит в итоге:

  • Ваша локальная ветка branch-name отправляется на удаленный репозиторий origin, и создается (если еще не существует) ветка origin/branch-name.
  • Устанавливается связь между вашей локальной веткой branch-name и удаленной веткой origin/branch-name. Теперь Git знает, что они "отслеживают" друг друга.

Последствия установки upstream:

  • Упрощение последующих операций: После того, как 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

0