remota - git push
Remoto rechazado(actualizaciĆ³n superficial no permitida) despuĆ©s de cambiar la URL remota de Git (4)
En caso de que su repositorio sea de
origin
, y el repositorio original esté en
upstream
:
git fetch --unshallow upstream
Tengo un proyecto bajo el control de versiones de Git que trabajé tanto en un servidor como en mi computadora local. Originalmente tenía el origen remoto configurado como mi computadora local, pero ahora me gustaría cambiarlo a BitBucket.
En el servidor usé el comando
git remote set-url origin bitbucket_address
Pero ahora, cuando trato de impulsar mi proyecto, aparece el error
! [remote rejected] master -> master (shallow update not allowed)
¿Qué está causando esto y cómo lo soluciono?
Otra opción si desea mantener el repositorio tal como está con las nuevas confirmaciones que ha agregado desde la confirmación inicial superficial es esta: corrija esta confirmación con un rebase interactivo .
-
Inicie un rebase interactivo que incluya la primera confirmación (raíz) con
git rebase --interactive --root
-
Cambie la
pick
de las confirmaciones iniciales paraedit
y guardar y cerrar el archivo.Si ha clonado el repositorio con una profundidad mayor que 1, es posible que deba hacer lo mismo para todas esas confirmaciones. O, alternativamente, ejecute la
fixup
de todos estos durante el rebase interactivo. -
Convierta esta confirmación en una confirmación regular y no profunda con
git commit --amend --no-edit
Esto también cambiará la ID de confirmación y lo agregará como coautor a esta confirmación inicial.
-
No olvides terminar tu rebase
git rebase --continue
Parece que ha usado
git clone --depth <number>
para clonar su versión local.
Esto da como resultado un
clon poco profundo
.
Una limitación de tal clon es que no puede empujarlo a un
nuevo
repositorio.
Ahora tiene dos opciones:
- Si no le importa su historial actual o faltante, eche un vistazo a esta pregunta
- si desea mantener su historial completo, continúe leyendo:
Entonces, quieres mantener tu historia, ¿eh? Esto significa que tienes que deshacer tu repositorio. Para hacerlo, deberá agregar su control remoto anterior nuevamente.
git remote add old <path-to-old-remote>
Después de eso, usamos
git fetch
para recuperar el historial restante del control remoto anterior (como se sugiere en
esta respuesta
).
git fetch --unshallow old
Y ahora debería poder ingresar a su nuevo repositorio remoto.
Nota : Después de descifrar su clon, obviamente puede eliminar el control remoto anterior nuevamente.
Si desea impulsar el nuevo repositorio tal como está, puede intentar esto:
-
Primero elimine la
old git folder
de su repositorio actual,sudo rm -rf .git
-
Luego inicialice el git nuevamente
git init
-
A continuación, agregue el nuevo repositorio remoto
git remote add your-new-repo
- Entonces empujarlo.