Sinossi
git repack [-a] [-d] [-l] [--depth=<n>] [--window=<n>]
Descrizione
Il comando git repack riconfeziona gli oggetti del repository, combinando più pack in uno e opzionalmente spostando oggetti loose in pack. È il modo principale in cui Git rimane compatto. git gc chiama repack come parte del suo lavoro; il repack manuale espone controllo più fine sui parametri di ricerca delta.
Nell'uso quotidiano, git repack si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Quando usarlo
La maggior parte degli utenti si affida a gc. Ricorri direttamente a repack quando regoli lo storage su un server (i repo grandi beneficiano di --depth, --window personalizzati) o quando investighi il layout di storage.
Opzioni comuni
| Opzione | Descrizione |
|---|---|
-a | Impacchetta tutto raggiungibile in un singolo pack. |
-A | Come -a ma mantiene irraggiungibili loose. |
-d | Cancella pack ridondanti dopo il repacking. |
-l | Passa --local a pack-objects. |
--depth=<n> | Profondità massima della catena delta. |
--window=<n> | Dimensione della window per selezione delta. |
-k, --keep-pack=<name> | Mantiene il pack nominato intatto. |
Esempi
git repack -ad
# Singolo pack, elimina quelli ridondanti
git repack -a -d --depth=50 --window=250
# Packing più stretto per risparmi di storage (più lento)
git repack -A -d
# Mantieni irraggiungibili loose per sicurezza
Errori comuni
Parametri aggressivi consumano RAM e CPU sproporzionati allo spazio risparmiato. I valori predefiniti sono ragionevolmente tunati. Dimenticare -d dopo -a lascia pack duplicati.
Comandi correlati
git gc, git pack-objects, git verify-pack, git prune