Git Push
Последнее обновление
git push загружает коммиты вашей локальной ветки в её удалённый аналог (например, на GitHub). После того как у ветки задан upstream, достаточно простого git push; первый push новой ветки использует -u, чтобы создать удалённую ветку и настроить отслеживание, так что последующие push и pull не требуют аргументов.
Попробуйте это в терминальном playground - настоящая оболочка в вашем браузере, ничего устанавливать не нужно.
Синтаксис
| Command | What 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 |
Частые случаи
| Goal | Command |
|---|---|
| Отправить совершенно новую ветку | git push -u origin feature |
| Отправить после настройки upstream | git push |
| Отправить один тег | git push origin v1.0.0 |
| Удалить удалённую ветку | git push origin --delete feature |
Пример по шагам
| Шаг | Команда | Результат |
|---|---|---|
| 1 | git remote add origin <url> | Связывает локальный репозиторий с удалённым под именем origin |
| 2 | git push -u origin main | Создаёт main в удалённом репозитории и назначает её upstream для вашей локальной main |
| 3 | git 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 также пошагово рассматривает работу с удалёнными репозиториями.