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-search

Updates 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 и проверка шагов.