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 intento impulsar mi proyecto, aparece el error
! [remote rejected] master -> master (shallow update not allowed)
¿Qué está causando esto y cómo lo soluciono?

git clone --depth?shallowen su.gitcarpeta.shallowarchivo.Respuestas:
Como parece que has usado
git clone --depth <number>para clonar tu 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:
Entonces, quieres mantener tu historia, ¿eh? Esto significa que tienes que deshacer tu repositorio. Para hacerlo, deberá agregar su control remoto anterior nuevamente.
Después de eso, usamos
git fetchpara recuperar el historial restante del control remoto anterior (como se sugiere en esta respuesta ).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.
fuente
git fetch --unshallowpuede tomar una especificación de referencia solo para anular una determinada rama en lugar de todo el repositorio. Por ejemplo:git fetch --unshallow origin refs/heads/mydeepbranch:refs/remotes/origin/mydeepbranchorigin/mastertenía 20 confirmaciones antes deoldrepo/mastercuando loclone --depth 1editó, y ha realizado 17 confirmaciones locales desde entonces, es suficiente para que lo hagagit fetch --depth 37 origin refs/heads/master:refs/remotes/origin/master(disculpas por cualquier error de uno por uno), y luego puede hacerlogit push oldrepo mastersin incidentes (puede requerir git 1.9.0 o más reciente).En caso de que su repositorio sea
origin, y el repositorio original seaupstream:fuente
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 la siguiente: modifique esta confirmación con un rebase interactivo .
Inicie un rebase interactivo que incluya la primera confirmación (raíz) con
Cambie la
pickde las confirmaciones iniciales aedity guarde y cierre 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
fixuppara todos estos durante el rebase interactivo.Convierta esta confirmación en una confirmación regular, no profunda
Esto también cambiará la ID de confirmación y lo agregará como coautor a esta confirmación inicial.
No olvides terminar tu rebase
fuente
Si desea impulsar el nuevo repositorio tal como está, puede intentar esto:
old git folderde su repositorio actual,sudo rm -rf .gitgit initgit remote add your-new-repofuente
Si va a buscar --unshallow no funciona. Debe haber algunos problemas con su sucursal. Corríjalo con el siguiente comando antes de presionarlo.
Haga esto solo con --unshallow no funciona ya que existe una preocupación de SEGURIDAD .
fuente