Sinopsis
git archive [--format=<fmt>] [--prefix=<p>/] [-o <file>] <tree-ish> [<path>...]
Descripción
El comando git archive crea un tarball o zip de los archivos en un commit, tag o tree dado. A diferencia de copiar el árbol de trabajo, exporta exactamente lo que Git tiene rastreado en esa revisión, sin .git y sin archivos no rastreados.
Usado típicamente para distribuir releases sin clonar el repo entero. git archive --format=tar.gz HEAD > release.tar.gz es el caso de uso más común.
En el uso diario, este comando se integra estrechamente con alias de shell, plugins de editor e integración continua. Los usuarios avanzados a menudo añaden alias que combinan los flags que siempre pasan. El formato de salida puede personalizarse vía configuración de Git. Cuando algo sale mal, ejecuta el comando con GIT_TRACE=1 para revelar las llamadas plumbing subyacentes.
Entender cómo este comando interactúa con el resto del modelo de datos de Git rinde dividendos. Cada comando opera sobre algún subconjunto de las piezas (objetos, index, refs, árbol de trabajo), y saber cuáles toca ayuda a predecir resultados y a recuperarse de errores.
Opciones comunes
| Opción | Descripción |
|---|---|
--format=<fmt> | tar, tar.gz, zip (default tar). |
--prefix=<p>/ | Prepend a directory to all archive paths. |
-o <file> | Write to file instead of stdout. |
--remote=<repo> | Archive from a remote repository. |
--worktree-attributes | Honor export-ignore attributes. |
-l, --list | List supported formats. |
Ejemplos
git archive --format=tar.gz --prefix=myproj-1.0/ -o myproj-1.0.tar.gz v1.0
# Release tarball with named top-level directory
git archive HEAD docs/ | tar -x -C /tmp/docs
# Extract the docs/ directory at HEAD into /tmp/docs
git archive --format=zip -o snapshot.zip HEAD
# ZIP archive of current tree
Examples (continued)
# Use .gitattributes to exclude files from archives:
echo "tests/ export-ignore" >> .gitattributes
echo ".github/ export-ignore" >> .gitattributes
git archive --worktree-attributes -o release.tar.gz HEAD
Errores comunes
Forgetting --prefix creates an archive that explodes files into the current directory on extraction. Without export-ignore attributes, your archive may include CI configs, tests, and dev-only files that you didn't intend to ship.
Comandos relacionados
git bundle, git tag, git show, tar