git push: отправить коммиты на сервер
Обновлено 31 июля 2026 г.
git push копирует коммиты из твоей локальной ветки в удалённый репозиторий и двигает там ветку вперёд. До push вся работа живёт только на твоём диске, и потеря машины означает потерю истории.
Чужие рабочие каталоги push не трогает. Коллеги увидят твои коммиты, когда сами сделают git pull или git fetch. Обмен всегда идёт по твоей команде: сервер сам в твой проект не лезет.
Первая отправка новой ветки выглядит так:
$ git push -u origin main
Enumerating objects: 3, done.
Writing objects: 100% (3/3), 226 bytes | 226.00 KiB/s, done.
To github.com:username/my-project.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.origin - имя удалённого репозитория, main - имя ветки. Флаг -u (полное имя --set-upstream) запоминает связку: локальная main отныне привязана к origin/main. Дальше хватает голого git push без имён, а git status начинает писать, на сколько коммитов ты впереди сервера.
Без -u на новой ветке git не угадывает, куда её класть:
$ git push
fatal: The current branch feature-search has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin feature-searchUpdates were rejected
Самый частый отказ:
$ git push
To github.com:username/my-project.git
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'github.com:username/my-project.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.На сервере лежат коммиты, которых у тебя нет, и push отказывается их затирать. Порядок лечения всегда один: git pull, разобраться со слиянием, потом git push ещё раз. Это рутина, а не поломка. Флаг --force тут не помощник: он заменяет серверную ветку твоей версией и выбрасывает чужую работу.
Удалить ветку на сервере
Локальный git branch -d серверную копию не трогает. Её убирают отдельной командой:
$ git push origin --delete feature-search
To github.com:username/my-project.git
- [deleted] feature-searchЧастые ошибки
Push отправляет только закоммиченное. Правки, которые лежат в рабочем каталоге или в индексе, на сервер не уедут, поэтому перед отправкой стоит глянуть git status.
Метки push тоже не отправляет. Ветки уезжают, а v1.0 остаётся у тебя, пока не сделаешь git push origin v1.0. Подробнее в статье git tag.
Где это в учебнике
Глава 6. GitHub: облако и совместная работа.
Потренироваться руками - в Песочнице: настоящий терминал с git и проверка шагов.