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?


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>


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


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.