git archive: cómo exportar un proyecto de Git
A veces puede resultar útil crear un archivo de almacenamiento de un repositorio de Git. Un archivo de almacenamiento combina varios archivos en uno solo. Después, se puede extraer para reproducir cada uno de los archivos que contiene. Git es increíblemente eficaz para preservar el historial y la colaboración en equipo. Sin embargo, los archivos de almacenamiento eliminan la sobrecarga de los metadatos de Git y pueden ser más fáciles de distribuir a otros usuarios o de conservar en almacenamiento en frío a largo plazo.
¿Qué hace git archive?
El comando git archive
es una herramienta de línea de comandos de Git que creará un archivo de almacenamiento a partir de referencias de Git concretas, como confirmaciones, ramas o árboles. git archive
acepta argumentos adicionales que alterarán la salida del archivo.
Ejemplos de exportación de Git
Este es el ejemplo más básico de ~git archive~
:
git archive --format=tar HEAD
Este comando, cuando se ejecute, creará un archivo a partir de la referencia HEAD
actual del repositorio. De forma predeterminada, git archive
transmitirá la salida del archivo al flujo efímero stdout. Deberás registrar este flujo de salida en un archivo permanente. Puedes especificar un archivo permanente mediante la opción --output de git archives
o mediante la redirección stdout del sistema operativo.
git archive --output=./example_repo_archive.tar --format=tar HEAD
Material relacionado
Chuleta de Git
VER LA SOLUCIÓN
Aprende a usar Git con Bitbucket Cloud
El ejemplo siguiente creará un nuevo archivo de almacenamiento y lo guardará en el archivo example_repo_archive.tar
. En los ejemplos anteriores se ha creado una salida de archivo de almacenamiento sin comprimir. Esto se indica mediante la opción --format=tar
. La opción de formato también acepta los conocidos formatos de archivos comprimidos zip
y tar.gz
. Si se pasa una de estas opciones de formato, se creará un archivo de almacenamiento comprimido. Si no se pasa ningún valor de formato, se deducirá de cualquier opción --output
que se haya pasado.
git archive --output=./example_repo_archive.tar.gz --format=tar HEAD ./build
Se pueden crear archivos de almacenamiento parciales del repositorio pasando un argumento de ruta. Este ejemplo añade un argumento de ruta ./build
al comando archive. Este comando generará un archivo de almacenamiento que incluirá solo los archivos almacenados en el directorio ./build
.
Opciones
Los ejemplos anteriores han ilustrado algunos de los casos de uso más habituales de git archive
. A continuación, veremos otras opciones que se pueden pasar a git archive
.
--prefix=<prefix>/
Las opciones de prefijo anteponen una ruta a cada uno de los archivos incluidos en un archivo de almacenamiento. Esto puede resultar útil para que el contenido del archivo de almacenamiento se extraiga en un espacio de nombres único.
--remote=<repo>
La opción remota espera una URL de repositorio remoto. Cuando se invoca con la opción remota, git archive
recuperará el repositorio remoto y creará un archivo de almacenamiento a partir de la referencia especificada si está disponible en el remoto.
Configuración
Hay algunos valores de configuración de Git globales que ~git archive~ respetará. Estos valores se pueden configurar con la utilidad git config.
tar.umask
La opción de configuración para quitar la máscara (unmask) se usa para especificar la restricción de bits de los permisos a nivel de Unix en el archivo de almacenamiento de salida.
tar.<format>.command
Esta opción de configuración permite especificar un comando de shell personalizado que ejecutará la salida de git archive
. Es similar a omitir la opción --output
y canalizar el flujo stdout de ~git archive~ a una herramienta personalizada. Esto permite un posprocesamiento fijo del archivo de almacenamiento personalizado.
tar.<format>.remote
Si se habilita, permite a los clientes remotos recuperar archivos de tipo format
.
Resumen de git archive
El comando git archive es una herramienta útil para crear paquetes distribuibles de repositorios de Git. Puede apuntar a referencias específicas de un repositorio y solo empaquetar el contenido de esas referencias. Además, tiene varios formatos de salida que pueden utilizar compresión adicional.
Compartir este artículo
Tema siguiente
Lecturas recomendadas
Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.