Git archive nos permite exportar el contenido de nuestro proyecto empaquetándolo o comprimiéndolo en un solo fichero.
Git archive no sólo nos permitirá exportar una rama deseada sino que también nos permite seleccionar que directorios o ficheros de esta queremos exportar. Pero recuerda hacer commit de los cambios o estos no serán exportados.
Hay que tener en cuenta que cuando realizamos una exportación el directorio .git/ no será incluido.
Formas de uso
Para exportar una rama de nuestro proyecto en formato zip tecleamos el siguiente comando.
1 |
$ git archive --format=zip master > project.zip |
- El argumento —format nos pemite indicar el formato del fichero (podrá ser tar, tgz, tar.gz y zip)
- A continuación indicamos la rama que deseamos exportar
- Y por último el nombre y extensión del fichero.
En caso de no incluir el argumento –format la compresión utilizada será la seleccionada en la extensión del fichero a exportar. Por lo que si nos queremos ahorrar el uso de este argumento teclearemos:
1 |
$ git archive master > project.zip |
Para comprobar qué formatos de compresión son aceptados por git usaremos el argumento list. Los formatos permitidos serán tar, tgz, tar.gz y zip.
1 |
$ git archive --list |
Sino queremos usar la compresión o empaquetado ofrecida por git, para así poder usar otro aplicación de compresión instalada en nuestro sistema (como puede ser gzip, bzip2, etc …) lo haremos de la siguiente manera:
1 2 |
$ git archive master | gzip > lasted.tgz $ git archive master | bzip2 > latest.tar.bz2 |
Si queremos guardar todo el contenido desde el último commit de la rama en la que estamos situados.
1 |
$ git archive -o latest.zip head |
Veamos ahora otro ejemplo para guardar un determinado fichero de la rama master
1 |
$ git archive --format=zip master^ index.php > project.zip |
Si queremos seleccionar el contenido de una serie de carpetas y ficheros bastaría con separarlos por espacios
1 |
$ git archive --format=zip master^ inc/ assets/ *.php > project.zip |
También podemos realizar una exportación desde un repositorio remoto usando el argumento —remote
1 |
$ git archive --format=tar --remote ssh://tuservidor.com/path/to/git > /tmp/project.tgz |
Configuración de exportación
Para personalizar un poco la exportación vamos a hacer uso del fichero .gitattributes el cual tiene muchas utilidades pero nos centraremos en la de exportación.
Por lo que todos los ficheros o directorios que incluyamos en este fichero con el atributo export-ignore serán ignorados durante la exportación realizada con git archive.
De esta forma podremos exportar un proyecto sin necesidad de incluir ciertas carpetas o ficheros innecesarios y que luego podremos cargar a producción o simplemente para ser utilizado como copia de seguridad.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# Git Files .gitignore export-ignore .gitattributes export-ignore # Directories .vscode export-ignore # Other files *README.md export-ignore *LICENSE.md export-ignore COPYRIGHT.md export-ignore CHANGELOG.md export-ignore Thumbs.db export-ignore |
Recuerda que git archive es un comando muy versatil, potente y con gran cantidad de opciones por lo que si quieres obtener más información puedes consultar
1 |
$ git help archive |