Usando git para obtener solo la última revisión

380

Quiero rastrear un proyecto que usa git. No quiero clonar el repositorio completo y el historial completo, solo quiero la última revisión, y quiero poder actualizar a nuevas revisiones desde el proyecto remoto.

Intenté usar git clone, pero esto crea una copia de todo el repositorio (gran tamaño de archivo), y el seguimiento de los cambios hace que el espacio en disco sea aún más grande (100mb de archivos ahora ocupa más de 2 gb).

No voy a enviar parches, y no necesito el historial. Solo quiero la última versión como en subversion.

¿Es esto posible en git?

traje
fuente
2
Git 1.9 / 2.0 (Q1 2014) será mucho más eficiente con la clonación superficial: stackoverflow.com/a/21217267/6309 y stackoverflow.com/a/21217326/6309
VonC

Respuestas:

552

Use la --depthopción en git clone:

Cree un clon superficial con un historial truncado al número especificado de confirmaciones.

ejemplo: git clone --depth=1 <remote_repo_url>

Greg Hewgill
fuente
87
ejemplo:git clone --depth=1 <remote_repo_url>
iDev247
14
Desde commit 82fba2b en git 1.9 estas limitaciones ya no existen.
niutech
1
Que limitaciones
Ignorante
44
@Triangles: Limitaciones (ya no actual): un repositorio poco profundo tiene una serie de limitaciones (no se puede clonar ni extraer de él, ni empujar ni entrar en él), pero es adecuado si solo está interesado en la historia reciente de un gran proyecto con una larga historia, y desearía enviar arreglos como parches.
odinho - Velmont
1
La opción fue agregada engit 1.8.4 .
ivan_pozdeev
79

La solución alternativa para hacer clones superficiales ( git clone --depth=1 <URL>) sería, si el lado remoto lo admite, usar la --remoteopción de archivo git :

$ git archive --format=tar --remote=<repository URL> HEAD | tar xf -

O, si el repositorio remoto en cuestión es navegable usando alguna interfaz web como gitweb o GitHub, entonces existe la posibilidad de que tenga la función 'instantánea', y puede descargar la última versión (sin información de versiones) desde la interfaz web.

Jakub Narębski
fuente
44
Sin embargo, esta solución no satisfará este requisito: "Quiero poder actualizar a nuevas revisiones desde el proyecto remoto". Dado que básicamente descarga el archivo, no podrá avanzar rápidamente una confirmación o dos. "Clon superficial" lo permite. Aún así, supongo que esta solución tiene sus casos de uso, por lo que vale la pena mencionar.
VasiliNovikov