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 |
Частые вопросы про git push
Как отправить новую ветку в удалённый репозиторий?
Выполните
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.Можно ли попрактиковаться в этом онлайн?
Да. Откройте терминальный playground, чтобы выполнить
git push в настоящей оболочке в вашем браузере - ничего устанавливать не нужно. Бесплатный интерактивный курс по Git от Coddy также пошагово рассматривает работу с удалёнными репозиториями.