У меня есть ветвь публичного репозитория, и я пытаюсь обновить свою ветку текущими коммитами из исходного репозитория:
$ git fetch <remote>
remote: Counting objects: 24, done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 20 (delta 12), reused 0 (delta 0)
Unpacking objects: 100% (20/20), done.
From git://github.com/path_to/repo
9b70165..22127d0 master -> $/master
$ git rebase <remote>
fatal: Needed a single revision
invalid upstream <remote>
Это <remote>
вместо моего удаленного имени и на самом деле не мое удаленное имя. Документация по этой ошибке кажется немного свободной.
Ответы:
Вам необходимо указать имя ветви (или другой идентификатор фиксации), а не имя удаленного пользователя
git rebase
.Например:
не:
Обратите внимание, что хотя
origin
ссылка должна указывать наorigin/HEAD
ссылку при использовании в качестве аргумента, где требуется ссылка на коммит, похоже, что не каждый репозиторий получает такую ссылку, поэтому он может не работать (и в вашем случае не работает). Это платит, чтобы быть явным.источник
origin
в контексте ref интерпретируется какorigin/HEAD
. Я видел, как хранилища заканчивали тем, что не знали, что этоorigin/HEAD
такое ...git rebase origin
на тестовом репозитории (гдеorigin
естьHEAD
), и я получаю ошибку ОП. В документации для rebase не сказано, что удаленное имя действительно для<upstream>
.git rev-parse origin
работает, как иgit rebase origin
в моем клоне git.git (в актуальном, ускоренном и истинном случае перебазирования, включая интерактивный).git describe
вашиHEAD
?Проверьте правильность написания имени ветви . Я перебирал ветку истории (то есть
branch_name
) и забыл часть истории. (то естьstory/branch_name
), а затем git плюнул мне в эту ошибку, которая не имела особого смысла в этом контексте.источник
featureName
когда ветка фактически названаfeatures/featureName
Я столкнулся с этим и понял, что я не получил вверх по течению, прежде чем пытаться перебазировать. Все что мне нужно было
git fetch upstream
источник
Проблема в том, что вы разветвились от ветки ...., где вы пытаетесь сделать ребазинг. Вы не можете перейти на ветку, которая не содержит фиксацию, на которой ваша текущая ветка была изначально создана.
Я получил это, когда я сначала переместил локальную ветвь X в нажатую Y, а затем попытался перебазировать ветку (сначала созданную в X) в нажатую Y.
Решил для меня, перебрав на X.
У меня нет проблем с перебазированием в удаленные ветви (возможно, даже не проверенные), при условии, что моя текущая ветвь происходит от предка этой ветки.
источник
--onto
. Все происходит от какого-то общего предка (для обычных репозиториев), так что это не проблема. Я получил эту ошибку от попытки сделать ребаз,foo
когда я еще не создал ветку для отслеживанияorigin/foo
.Для удаленного
origin
:источник
git submodule deinit --all -f
работал на меня.источник