Tener el historial completo de revisión de Git tiene muchos beneficios como parte del proceso de desarrollo.
Pero nuestro producto es el código fuente, estamos utilizando lenguajes con secuencias de comandos que no necesitan compilación o procesamiento, y luego el historial de Git se convierte en una carga para la implementación; en nuestro ejemplo, implementamos un entorno virtual limpio después de cada cambio, con varias implementaciones en Una sola máquina.
Hay algunas maneras de reducir la cantidad de historial, por ejemplo, clones poco profundos cuya eficiencia depende de qué tan profunda sea la revisión en la rama, haciendo una búsqueda en lugar de clonar, pero luego obtienes el historial de la revisión y viceversa, o obteniendo el total repo una vez y luego tire cuando sea necesario, pero esto es un desperdicio en términos de espacio en disco y tiende a ser menos confiable.
¿Hay alguna manera de obtener una única revisión de Git sin su historial?
Respuestas:
Clon superficial
De hecho, puedes obtener un clon superficial de Git usando:
Esto seguirá clonando el repositorio y creará una
.git
carpeta con los objetos, solo de menor tamaño (la diferencia depende del tamaño total del archivo en comparación con el tamaño del historial).Archivo Git
También puede usar git-archive para extraer un archivo del repositorio:
En los ejemplos que muestra, por ejemplo:
Hosted Git, API de archivo
Si aloja su repositorio en GitHub, puede usar su API de archivo :
https://api.github.com/repos/<username>/<repository>/zipball/<commit_hash>
Bitbucket.org tiene una misma funcionalidad para esto:
https://bitbucket.org/<username>/<repository>/get/<branch_name|commit_hash|tag>.zip
fuente
No despliegue su repositorio git. Desarrollar una metodología de despliegue real. Incluso si es tan simple como armar un archivo (= construir un artefacto con solo los archivos necesarios para ser implementados) de los scripts implementados.
Incluso si clona superficialmente la punta de su repositorio de origen, es probable que no necesite pruebas unitarias, documentación, perfiles de revestimiento y otras efímeras de soporte en su entorno implementado.
Nota : para los repositorios de lenguajes con script que realmente no tienen un paso de "compilación", una forma trivial de liberar un artefacto sería empaquetarlos en un archivo, como tar o rpm. Luego, para "desplegar", descomprime el archivo o instala las rpm. esto elimina la necesidad de herramientas git en su cadena de implementación (no todos los servidores prod tendrán esas herramientas de desarrollo).
fuente
Para obtener un repositorio, no, no hay manera, principalmente porque no hay 'revisión'. Git store commits, que son cambios del estado anterior
Si desea su repositorio en un punto específico en el tiempo, debe retirar el compromiso en este momento y todos sus ancestros o solo obtendrá los cambios realizados en el compromiso.
Para evitar confusiones: la clonación superficial obtiene el historial necesario y luego lo trunca al espacio libre, el árbol todavía está hecho de la historia.
Para las soluciones, @ 7ochem answer sí las cubre.
fuente