Tengo una rama de un repositorio público y estoy tratando de actualizar mi rama con las confirmaciones actuales del repositorio 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>
El <remote>
está en lugar de mi nombre remoto y en realidad no es mi nombre remoto. La documentación sobre este error parece estar un poco floja.
Respuestas:
Debe proporcionar el nombre de una rama (u otro identificador de confirmación), no el nombre de un control remoto
git rebase
.P.ej:
no:
Tenga en cuenta que, aunque
origin
debería resolver la referenciaorigin/HEAD
cuando se usa como un argumento donde se requiere una referencia de confirmación, parece que no todos los repositorios obtienen dicha referencia, por lo que puede no funcionar (y en su caso no funciona). Vale la pena ser explícito.fuente
origin
en contexto de referencia se interpreta comoorigin/HEAD
. Sinorigin/HEAD
embargo, he visto repositorios que no saben qué es ...git rebase origin
un repositorio de prueba (dondeorigin
tiene unHEAD
) y recibo el error del OP. La documentación para rebase no dice que un nombre remoto sea válido para<upstream>
.git rev-parse origin
funciona, al igual quegit rebase origin
en mi clon git.git (en caso de rebase actualizado, avance rápido y verdadero, incluido el interactivo).git describe
tuHEAD
?Verifique que haya escrito correctamente el nombre de la rama . Estaba rebasando una rama de la historia (es decir
branch_name
) y olvidé la parte de la historia. (es decirstory/branch_name
) y luego git me escupió este error que no tenía mucho sentido en este contexto.fuente
featureName
cuando la rama se llama realmentefeatures/featureName
Me encontré con esto y me di cuenta de que no iba a buscar el río arriba antes de intentar rebase. Todo lo que necesitaba era
git fetch upstream
fuente
El problema es que se bifurcó de una rama de ... donde está tratando de cambiar de base. No puede cambiar el nombre de una rama que no contiene la confirmación en la que se creó originalmente su rama actual.
Obtuve esto cuando volví a fusionar una rama local X a una Y empujada, luego traté de rebase una rama (creada por primera vez en X) a la Y empujada.
Resuelto para mí rebasando a X.
No tengo problemas para volver a cambiar a sucursales remotas (posiblemente ni siquiera desprotegidas), siempre que mi rama actual provenga de un antepasado de esa rama.
fuente
--onto
. Todo desciende de algún ancestro común (para repositorios normales), por lo que ese no es el problema. Recibí este error al intentar volver a crear una basefoo
cuando aún no había creado la rama para rastrearorigin/foo
.Para control remoto
origin
:fuente
git submodule deinit --all -f
trabajó para mi.fuente