Задать вопрос
@romicohen
Системный Архитектор

Делаю 'git push -u' — получаю 'fatal: Текущая ветка some-branch не имеет вышестоящей ветки' — как исправить и почему такое?

Полный текст:

$ git push -u
fatal: Текущая ветка some-branch не имеет вышестоящей ветки.
Чтобы отправить текущую ветку и установить внешнюю ветку как вышестоящую для этой ветки, используйте

    git push --set-upstream origin some-branch


Но ведь git push -u - это как раз и есть синоним для git push --set-upstream origin some-branch - разве нет?

Что вообще происходит? -)
  • Вопрос задан
  • 6397 просмотров
Подписаться 2 Простой 12 комментариев
Помогут разобраться в теме Все курсы
  • ProductStar
    Python + Flask + Git: веб-разработка с нуля
    2 месяца
    Далее
  • Учебный центр IBS
    DEV-007 Введение в систему контроля версий Git
    1 неделя
    Далее
  • Stepik
    Git (система контроля версий)
    1 неделя
    Далее
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Команда push требует чтобы вы сообщили гиту куда отправить и что отправить: git push <remote_repo> <local_branch>
Если только ранее это ещё не было сделано с -u.
Иначе вылезет ваша ошибка
➜ git push -u -v
fatal: The current branch root has no upstream branch.
To push the current branch and set the remote as upstream, use

git push --set-upstream origin root

To have this happen automatically for branches without a tracking
upstream, see 'push.autoSetupRemote' in 'git help config'.

Но можно включить режим автоматической привязки
git config push.autoSetupRemote true

Тогда простой git push даже без -u будет текущую новую ветку отправлять в remote origin с таким же именем ветки и автоматически связывать локальную и внешнюю ветку.

Почему сработало на другом компе?
Предположу что на другом компьютере git pull -u сработал потому, что он там ранее уже выполнялся с полными параметрами. Затем на гитхабе ветку удалили, но локальный репозиторий связь всё ещё «помнил»
Ситуацию бы прояснил вывод команды git branch -vv
* main        4e0c267 Commit Message
  some-branch 4e0c267 [origin/some-branch: отсутствует] Commit Message

Так показывается ситуация, когда связь есть, но внешней ветки уже нет.
Но предварительно нужно скачать обновления через git fetch --prune -v
только так локальный репозиторий узнает что связанная ветка удалена (отсутствует)

Если я переключусь на ветку some-branch и напишу git push, то гит отправит ветку в на прежнее место и тем самым восстановит её на гитхабе.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
Made In Dream Санкт-Петербург
от 100 000 до 220 000 ₽
от 250 000 до 320 000 ₽