Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git archive [--format=<fmt>] [--prefix=<p>/] [-o <file>] <tree-ish> [<path>...]

Descrizione

Il comando git archive crea un file tar o zip contenente i contenuti di qualsiasi tree (commit, tag o branch). A differenza di un semplice tar della working tree, include solo file tracciati a una specifica revisione ed esclude le directory .git. Questo lo rende ideale per produrre tarball di rilascio, distribuzioni sorgente e snapshot riproducibili.

L'opzione --prefix avvolge tutti i file sotto una sottodirectory dentro l'archivio — importante per le release così che l'estrazione crei una cartella nominata. git archive supporta anche l'esecuzione su rete da server che lo permettono.

Nell'uso quotidiano, git archive si integra con alias e CI.

Capire il modello dati di Git aiuta a prevedere i risultati.

Opzioni comuni

OpzioneDescrizione
--format=<fmt>tar, tar.gz, zip (default tar).
--prefix=<p>/Antepone una directory a tutti i path nell'archivio.
-o <file>Scrive su file invece che su stdout.
--remote=<repo>Archivia da un repository remoto.
--worktree-attributesOnora gli attributi export-ignore.
-l, --listElenca formati supportati.

Esempi

git archive --format=tar.gz --prefix=myproj-1.0/ -o myproj-1.0.tar.gz v1.0
# Tarball di release con directory di top level nominata

git archive HEAD docs/ | tar -x -C /tmp/docs
# Estrae la directory docs/ all'HEAD in /tmp/docs

git archive --format=zip -o snapshot.zip HEAD
# Archivio ZIP del tree corrente

Esempi (continua)

# Usa .gitattributes per escludere file dagli archivi:
echo "tests/ export-ignore" >> .gitattributes
echo ".github/ export-ignore" >> .gitattributes
git archive --worktree-attributes -o release.tar.gz HEAD

Errori comuni

Dimenticare --prefix crea un archivio che esplode i file nella directory corrente al momento dell'estrazione. Senza attributi export-ignore, il tuo archivio può includere config CI, test e file solo per dev che non intendevi spedire.

Comandi correlati

git bundle, git tag, git show, tar