Eu tenho uma ramificação de um repositório público e estou tentando atualizar minha ramificação com as confirmações atuais do repositório original:
$ 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>
Ele <remote>
está no lugar do meu nome remoto e não é realmente o meu nome remoto. A documentação deste erro parece um pouco solta.
Respostas:
Você precisa fornecer o nome de uma ramificação (ou outro identificador de confirmação), não o nome de um controle remoto
git rebase
.Por exemplo:
não:
Observe que, embora
origin
deva resolver para o reforigin/HEAD
quando usado como argumento em que uma referência de confirmação é necessária, parece que nem todo repositório obtém essa referência, portanto, ele pode não funcionar (e no seu caso não funciona). Vale a pena ser explícito.fonte
origin
no contexto ref é interpretado comoorigin/HEAD
. Eu vi repositórios acabam por não saber o queorigin/HEAD
é, no entanto ...git rebase origin
um repositório de teste (ondeorigin
tem umHEAD
) e recebo o erro do OP. A documentação para rebase não diz que um nome remoto é válido para o<upstream>
.git rev-parse origin
funciona, assim comogit rebase origin
no meu clone git.git (em caso de rebase atualizado, de avanço rápido e verdadeiro, inclusive interativo).git describe
o seuHEAD
?Verifique se você digitou o nome da filial corretamente . Eu estava refazendo um ramo da história (ie
branch_name
) e esqueci a parte da história. (iestory/branch_name
) e o git cuspiu esse erro para mim, que não fazia muito sentido nesse contexto.fonte
featureName
quando o ramo é na verdade o nomefeatures/featureName
Eu me deparei com isso e percebi que não havia buscado a montante antes de tentar me recuperar. Tudo que eu precisava era
git fetch upstream
fonte
O problema é que você ramificou uma ramificação de .... para onde está tentando se recuperar. Você não pode refazer a recuperação para uma ramificação que não contém a confirmação na qual a ramificação atual foi criada originalmente.
Eu obtive isso quando reformulei um ramo local X pela primeira vez para um Y enviado por push e tentei rebase um ramo (criado pela primeira vez em X) para o Y enviado por envio.
Resolvido para mim, alterando para X.
Não tenho nenhum problema ao refazer a ramificação remota (potencialmente nem check-out), desde que minha ramificação atual se origine de um ancestral dessa ramificação.
fonte
--onto
. Tudo descende de algum ancestral comum (para repositórios normais), então esse não é o problema. Recebi esse erro ao tentar fazer uma nova recuperaçãofoo
quando ainda não havia criado o ramo a ser rastreadoorigin/foo
.Para controle remoto
origin
:fonte
git submodule deinit --all -f
trabalhou para mim.fonte