Ahora que git fetch --unshallowexiste (como en la respuesta de @ sdram), esta respuesta ya no es la mejor.
Jack O'Connor
1
La respuesta de @ sdram no funcionó para mí (git versión 2.1.1), pero esta respuesta sí.
kay - SE es malvado
2
Ninguna de las respuestas funcionó para mí. Ambos comandos lograron recuperar todos los commits faltantes, pero cuando trato de empujar nuevos commits, recibo un error acerca de que el servidor no sabe acerca de las referencias 'superficiales'
Tyguy7
3
git fetch --depth=2147483647es la mayor profundidad posible para proporcionar al comando.
clacke
55
Solía git fetch --unshallow, pero todavía no muestra todas las ramas.
Sid
674
El siguiente comando (git versión 1.8.3) convertirá el clon superficial a uno normal
git fetch --unshallow
Luego, para acceder a todas las ramas en origen (gracias @Peter en los comentarios)
Esto no deshace el efecto secundario de una sola rama. Para hacer eso, edite .git / config y cambie fetch = + refs / heads / BRANCHNAME: refs / remotes / origin / BRANCHNAME to fetch = + refs / heads / *: refs / remotes / origin / *
Peter Cordes
3
Esto no crea sucursales locales que rastrean las sucursales remotas, por lo que aún debe pagar -b BRNAME origin / BRNAME para configurarlo.
Peter Cordes
26
Ver también stackoverflow.com/questions/17714159/… : a git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*";git fetch origin partir de una respuesta, debería ser lo mismo que editar a mano .git / config
Peter Cordes
Esto solo funciona si el repositorio está marcado como poco profundo. No recuerdo cómo, pero hay situaciones en las que puedes terminar con un repositorio incompleto sin haber hecho explícitamente un clon superficial. @ svick's stackoverflow.com/a/6802238/260122 es la respuesta que siempre funciona.
clacke
git fetch --unshallow --update-head-ok origin '+refs/heads/*:refs/heads/*'funcionó para mí
gzaripov
19
Necesitaba profundizar un repositorio solo a un compromiso particular.
Después de leer man git-fetch, descubrí que uno no puede especificar una confirmación, pero puede especificar una fecha:
git fetch --shallow-since=15/11/2012
Para aquellos que necesitan una profundización incremental, otra mancita:
--deepen=<depth>
Similar a --depth, excepto que especifica el número de confirmaciones desde el límite superficial actual en lugar de desde la punta de cada historial de rama remota.
Dos formas de lograr Shallow Clone a Deep Clone. :
Usó los siguientes pasos para descargar la rama: (Esto descarga la copia superficial de la rama y luego la convierte en un Clon completo, es decir, trae la rama completa y su historial).
Respuestas:
EDITAR:
git fetch --unshallow
ahora es una opción (gracias Jack O'Connor).Puede ejecutar
git fetch --depth=1000000
(suponiendo que el repositorio tenga menos de un millón de confirmaciones).fuente
git fetch --unshallow
existe (como en la respuesta de @ sdram), esta respuesta ya no es la mejor.git fetch --depth=2147483647
es la mayor profundidad posible para proporcionar al comando.git fetch --unshallow
, pero todavía no muestra todas las ramas.El siguiente comando (git versión 1.8.3) convertirá el clon superficial a uno normal
Luego, para acceder a todas las ramas en origen (gracias @Peter en los comentarios)
fuente
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*";
git fetch origin
partir de una respuesta, debería ser lo mismo que editar a mano .git / configgit fetch --unshallow --update-head-ok origin '+refs/heads/*:refs/heads/*'
funcionó para míNecesitaba profundizar un repositorio solo a un compromiso particular.
Después de leer
man git-fetch
, descubrí que uno no puede especificar una confirmación, pero puede especificar una fecha:Para aquellos que necesitan una profundización incremental, otra
man
cita:fuente
Puedes probar esto:
fuente
Ninguno de los mensajes anteriores hizo el truco. Estoy tratando de trabajar con etiquetas git a partir de un clon superficial.
Primero probé
que tipo de trabajo a mitad de camino. ¡Sin embargo, no hay etiquetas disponibles!
Este último comando realmente obtuvo las etiquetas y finalmente pude ejecutar
y terminemos con eso.
HTH
fuente
Dos formas de lograr Shallow Clone a Deep Clone. :
Usó los siguientes pasos para descargar la rama: (Esto descarga la copia superficial de la rama y luego la convierte en un Clon completo, es decir, trae la rama completa y su historial).
a. git clone -b branch http: //git.repository/customSP01.git --depth 1
Esto hace que un clon superficial (con la opción de profundidad) solo obtenga una sola rama (a la profundidad solicitada).
// El comando anterior convertirá el clon superficial en uno normal. Sin embargo, esto no trae todas las ramas:
Luego, para acceder a todas las sucursales.
[Este paso también se puede hacer manualmente editando la siguiente línea en .git / config.
fetch = + refs / heads / master: refs / remotes / origin / master
para (reemplazar maestro con *):
fetch = + refs / heads / *: refs / remotes / origin / *]
Esto convierte el clon superficial en clon profundo con todos los detalles del historial y la rama.
Puede evitar los pasos fyg, si usa el siguiente en lugar del comando presente en el paso a. para hacer el clon superficial:
git clone -b branch --no-single-branch http: //git.repository/customSP01.git --depth 1
fuente