Por Anónimo (no verificado) , 29 Abril 2026

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ónDescripció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-attributesHonor export-ignore attributes.
-l, --listList 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