Подключение 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 отправляет только закоммиченные изменения текущей ветки.