Подключение remote и git push

Связываем локальный проект с GitHub и впервые отправляем свои коммиты в облако.

Сценарий: локальный проект уже есть

Вы начали проект через git init и сделали несколько коммитов. Теперь хотите выложить его на GitHub. Сначала создайте пустой репозиторий на сайте GitHub (без README), затем привяжите его как remote:

git remote add origin https://github.com/ivan/my-project.git

Команда git remote add принимает имя (origin) и URL. Проверим, что связь установлена:

git remote -v

Первый push: флаг -u

Теперь отправляем коммиты на сервер. В первый раз добавьте флаг -u (он же --set-upstream):

git push -u origin main

Вывод:

Enumerating objects: 5, done.
Writing objects: 100% (5/5), 420 bytes, done.
To https://github.com/ivan/my-project.git
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.

Флаг -u связывает локальную ветку main с удалённой origin/main. Благодаря этому в следующий раз достаточно написать просто git push — git запомнит, куда отправлять.

Дальнейшие push

После того как upstream настроен, рутина проста:

git add .
git commit -m "Добавить страницу профиля"
git push

Что именно отправляет push

Важно понимать: git push отправляет только закоммиченные изменения текущей ветки. Файлы из рабочей директории или индекса, которые ещё не закоммичены, на сервер не уйдут. Нет коммита — нечего и пушить.

Отправка новой ветки

Если вы создали локальную ветку, её тоже нужно опубликовать с -u при первом push:

git switch -c feature-x
git push -u origin feature-x

Частая ошибка: rejected

Если push отклонён с сообщением ! [rejected] и fetch first, значит, на сервере есть коммиты, которых нет у вас. Это защита от перезаписи чужой работы. Решение — сначала забрать изменения через git pull, а потом снова сделать git push (об этом — в следующем уроке).

Стандартный старт нового репозитория на GitHub

Когда вы создаёте пустой репозиторий на GitHub, сайт сам показывает шпаргалку с командами для случая «у меня уже есть локальный проект». Обычно это выглядит так:

git remote add origin https://github.com/ivan/my-project.git
git branch -M main
git push -u origin main

Строка git branch -M main на всякий случай переименовывает текущую ветку в main — на случай, если у вас она называется иначе. Запомните этот набор из трёх команд: он выкладывает существующий проект на GitHub за один присест.

Никогда не пушьте с --force в общие ветки

Существует «силовой» push — git push --force, который перезаписывает историю на сервере. В общих ветках вроде main он опасен: вы можете затереть чужие коммиты. Если push отклонён, почти всегда правильное решение — сделать git pull и спокойно слить изменения, а не продавливать своё силой.

Итог

  • git remote add origin <url> привязывает локальный репозиторий к GitHub.
  • Первый push делайте с -u, чтобы связать ветку с удалённой; дальше хватит git push.
  • Push отправляет только закоммиченные изменения текущей ветки.
Проверьте себя
1. Что делает команда git remote add origin <url>?
AСоздаёт новую ветку origin
BПривязывает к репозиторию удалённый адрес под именем origin
CОтправляет коммиты на сервер
DУдаляет связь с сервером
2. Зачем нужен флаг -u при первом git push?
AЧтобы ускорить отправку
BЧтобы связать локальную ветку с удалённой и дальше пушить просто git push
CЧтобы удалить ветку на сервере
DЧтобы запушить без коммита
3. Что отправляет на сервер команда git push?
AВсе файлы рабочей директории, даже незакоммиченные
BТолько закоммиченные изменения текущей ветки
CСодержимое индекса без коммита
DФайлы из .gitignore
Поддержать проект