Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git pack-objects [--stdout] [--all] <base-name> < <object-list>

Descrizione

Il comando git pack-objects comprime un set di oggetti in un singolo packfile, applicando compressione delta a oggetti simili. I pack sono come Git memorizza gli oggetti efficientemente su disco e in rete — ogni fetch e push trasferisce pack.

Nell'uso quotidiano, git pack-objects si integra con alias e CI.

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

Quando usarlo

Quasi mai lo invochi direttamente. git gc, git repack e il protocollo di rete lo guidano per te. Ricorri ad esso manualmente quando implementi trasporto personalizzato, ottimizzi lo storage o sperimenti con strategie delta.

Opzioni comuni

OpzioneDescrizione
--stdoutScrive il pack su stdout invece che su file.
--allImpacchetta tutto raggiungibile da qualsiasi ref.
--revsLegge revisioni da stdin invece di SHA di oggetti.
--depth=<n>Profondità massima della catena delta.
--window=<n>Dimensione della window per ricerca delta.
--thinPermette pack thin (delta contro oggetti esterni).
--no-reuse-deltaRicalcola delta invece di riusare esistenti.

Esempi

git rev-list --objects --all | git pack-objects --stdout > everything.pack
# Costruisce un singolo pack di ogni oggetto raggiungibile

git rev-list --objects HEAD ^origin/main | \
  git pack-objects --thin --stdout > ahead.pack
# Un pack thin di solo i commit avanti rispetto a origin/main

git pack-objects --all .git/objects/pack/extra
# Repack di tutti gli oggetti raggiungibili in un nuovo pack chiamato "extra"

Errori comuni

Costruire pack grandi con --depth e --window impostati troppo alti consuma molta memoria e CPU. I default da git gc sono sensati per la maggior parte dei repo. Produrre pack thin senza contesto (un repo esistente a cui applicarli) è inutile.

Comandi correlati

git unpack-objects, git verify-pack, git gc, git repack