Menu
CoddyTech

Git Push

Последнее обновление

git push загружает коммиты вашей локальной ветки в её удалённый аналог (например, на GitHub). После того как у ветки задан upstream, достаточно простого git push; первый push новой ветки использует -u, чтобы создать удалённую ветку и настроить отслеживание, так что последующие push и pull не требуют аргументов.

Попробуйте это в терминальном playground - настоящая оболочка в вашем браузере, ничего устанавливать не нужно.

git push отправляет ваши новые локальные коммиты в удалённую ветку.

Синтаксис

CommandWhat it does
git pushОтправляет текущую ветку в её upstream
git push -u origin featureОтправляет новую ветку и задаёт upstream
git push origin mainОтправляет в конкретный удалённый репозиторий и ветку
git push --tagsОтправляет все локальные теги
git push --force-with-leaseБезопасный force push после rebase

Частые случаи

GoalCommand
Отправить совершенно новую веткуgit push -u origin feature
Отправить после настройки upstreamgit push
Отправить один тегgit push origin v1.0.0
Удалить удалённую веткуgit push origin --delete feature

Пример по шагам

ШагКомандаРезультат
1git remote add origin <url>Связывает локальный репозиторий с удалённым под именем origin
2git push -u origin mainСоздаёт main в удалённом репозитории и назначает её upstream для вашей локальной main
3git pushВсе следующие отправки в main не требуют аргументов

Частые вопросы про git push

Что делает git push?
Он отправляет коммиты, которые есть в вашей локальной ветке и которых нет в удалённой, а затем передвигает удалённую ветку на тот же коммит. Загружаются только коммиты: незакоммиченные изменения остаются на вашем компьютере, поэтому сначала сделайте коммит. Если в удалённом репозитории есть коммиты, которых нет у вас, push будет отклонён, пока вы не сделаете pull или rebase.
Как отправить новую ветку в удалённый репозиторий?
Выполните git push -u origin <branch>. Флаг -u (сокращение от --set-upstream) создаёт ветку в удалённом репозитории и связывает вашу локальную ветку с ней, так что потом простые git push и git pull работают без аргументов. Удалённая ветка не существует до этого первого push.
Почему git push пишет 'no upstream branch'?
Ваша локальная ветка ещё не связана с удалённой веткой. Отправьте её командой git push -u origin <branch>, чтобы создать удалённую ветку и задать upstream. После этого один git push уже знает, куда отправлять коммиты.
Как пушить теги?
Теги по умолчанию не отправляются. Отправьте один тег командой git push origin <tagname> или все сразу командой git push --tags. Это частая ловушка - тег, созданный локально, не появится в удалённом репозитории, пока вы явно его не отправите.
Как безопасно сделать force push?
После переписывания истории (rebase или amend) используйте git push --force-with-lease вместо --force. Он перезаписывает удалённый репозиторий только в том случае, если после вашего последнего fetch никто больше не пушил, защищая работу коллег. Полное объяснение смотрите на странице git force push.
Что означает git push -u origin main?
origin это удалённый репозиторий (см. git remote), main это ветка, а -u назначает эту удалённую ветку upstream для вашей локальной main. Именно эту команду GitHub показывает для нового репозитория: после первого запуска git push и git pull в main работают без аргументов.
Чем git push отличается от git pull?
Они переносят коммиты в противоположных направлениях. git push загружает ваши локальные коммиты в удалённый репозиторий; git pull скачивает новые коммиты из удалённого репозитория и сливает их с вашей веткой. Если push отклонён как non-fast-forward, обычно сначала нужно сделать pull. Что pull делает внутри, описано на странице git fetch и pull.
Можно ли попрактиковаться в этом онлайн?
Да. Откройте терминальный playground, чтобы выполнить git push в настоящей оболочке в вашем браузере - ничего устанавливать не нужно. Бесплатный интерактивный курс по Git от Coddy также пошагово рассматривает работу с удалёнными репозиториями.
Иллюстрация языков программирования Coddy

Изучайте Git с Coddy

НАЧАТЬ