![]() |
Quando si lavora con Git, prima o poi ci si scontra con un limite importante: Git non è progettato per gestire file di grandi dimensioni. Repository appesantiti, clone lentissimi e storici ingestibili sono problemi comuni quando si versionano asset binari come immagini, video o file di design.
È qui che entra in gioco Git LFS (Large File Storage).
Un problema che spesso emerge troppo tardi
Molti sviluppatori scoprono l’esistenza di Git LFS nel modo peggiore possibile: quando provano a caricare per la prima volta un file di grandi dimensioni su GitHub.
Il caso più comune è il tentativo di eseguire un git push che include un file superiore ai 100 MB, limite massimo consentito da GitHub per i file versionati normalmente.
A quel punto GitHub rifiuta il push con un messaggio di errore esplicito, indicando che il file è troppo grande. È spesso solo in questo momento — forse troppo tardi — che lo sviluppatore scopre che Git esiste, ma non è adatto a questo tipo di contenuti, e che esiste una soluzione chiamata Git LFS.
Il problema è che, arrivati a questo punto, il file potrebbe essere già stato aggiunto allo storico locale del repository. Questo costringe a interventi più complessi, come la riscrittura della storia Git o la migrazione dei file esistenti a LFS, operazioni che sarebbero state evitabili con una configurazione preventiva.
Proprio per questo motivo, è importante conoscere Git LFS prima di iniziare a versionare asset pesanti: adottarlo in anticipo permette di evitare errori bloccanti, perdita di tempo e repository difficili da mantenere nel lungo periodo.
Tips&Tricks
Anche se dopo aver eliminato i file superioi a 100MB, il push di git continua a bloccarsi o darti errore, esegui questo comando per risolvere il problema e continuare a lavorare come prima (ma ricordati prima di rimuovere i file di grandi dimensioni e fare commit 😉):
git reset origin/main
Cos’è Git LFS
Git LFS è un’estensione di Git pensata per gestire in modo efficiente file di grandi dimensioni o binari.
Invece di salvare questi file direttamente nel repository Git, Git LFS:
- conserva nel repository solo un puntatore testuale
- archivia il file reale in uno storage separato
- scarica il contenuto effettivo solo quando serve
Dal punto di vista dell’utente, l’esperienza rimane simile a Git tradizionale, ma con repository più leggeri e performanti.
Quando serve Git LFS
Git LFS è particolarmente utile quando il progetto include:
- immagini ad alta risoluzione (PNG, JPG, PSD)
- file audio o video
- modelli 3D
- file di machine learning (dataset, modelli addestrati)
- file binari generati automaticamente
- asset di videogiochi
Se riconosci uno di questi segnali, probabilmente Git LFS è la scelta giusta:
- il repository cresce rapidamente di dimensioni
git cloneogit fetchsono molto lenti- ogni modifica a un file binario salva una copia completa nello storico
- GitHub / GitLab segnalano limiti di dimensione
Come funziona Git LFS
Il flusso di lavoro è semplice:
- Git LFS intercetta alcuni tipi di file configurati dall’utente (es. *.psd tutti i file .psd)
- Git salva nel repository un file “pointer”
- Il file reale viene caricato su uno storage LFS
- Al checkout, Git LFS scarica automaticamente il file corretto
Per il team, tutto questo è trasparente: i file si aprono e si modificano normalmente.
| Fonte https://git-lfs.com/ |
Installazione di Git LFS
Prima di tutto, installa Git LFS:
git lfs install
Questo comando configura Git per usare LFS nel tuo ambiente.
Tracciare file con Git LFS
Per indicare a Git LFS quali file gestire, si usa il comando track.
Esempio: tracciare tutti i file .psd
git lfs track "*.psd"
Questo comando aggiorna (o crea) il file .gitattributes, che va versionato nel repository:
git add .gitattributes
git commit -m "Aggiungi Git LFS per file PSD"
Da questo momento in poi, tutti i file .psd verranno gestiti da Git LFS.
Usare Git LFS nel workflow quotidiano
Una volta configurato, il flusso di lavoro resta invariato:
git add file-grande.psd
git commit -m "Aggiorna asset grafico"
git push
Git LFS caricherà automaticamente il file nello storage remoto.
Chiunque cloni il repository riceverà il puntatore e il file reale verrà scaricato al checkout.
Migrare file esistenti a Git LFS
Se il repository contiene già file grandi versionati “normalmente”, puoi migrarli:
git lfs migrate import --include="*.zip,*.psd"
⚠️ Attenzione: questo comando riscrive la history del repository, quindi va usato con cautela e coordinato con il team.
Limiti e considerazioni
Prima di adottare Git LFS, è bene sapere che:
- molti servizi (GitHub, GitLab, Bitbucket) impongono quote di storage e banda
- Git LFS non è ideale per file che cambiano molto spesso e poco (es. log)
- tutti i membri del team devono avere Git LFS installato
Git LFS su GitHub e GitLab
Le principali piattaforme Git supportano Git LFS nativamente:
- GitHub: include una quota gratuita di storage e bandwidth
- GitLab: supporto integrato, con limiti variabili
- Bitbucket: piani dedicati per LFS
Verifica sempre i limiti del tuo provider per evitare blocchi improvvisi.
Conclusione
Git LFS è uno strumento fondamentale quando Git da solo non basta.
Permette di:
- mantenere repository leggeri
- migliorare le performance
- versionare correttamente file binari e di grandi dimensioni
Se il tuo progetto include asset pesanti, Git LFS non è un’opzione: è una necessità.
Link Utili
Follow me #techelopment
Official site: www.techelopment.it
facebook: Techelopment
instagram: @techelopment
X: techelopment
Bluesky: @techelopment
telegram: @techelopment_channel
whatsapp: Techelopment
youtube: @techelopment
