🗄️ Git LFS: cos’è, quando serve e come si usa (prima che sia tardi)

  

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).

🔗 Ti piace Techelopment? Dai un'occhiata al sito per tutti i dettagli!

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 clone o git fetch sono 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:

  1. Git LFS intercetta alcuni tipi di file configurati dall’utente (es. *.psd tutti i file .psd)
  2. Git salva nel repository un file “pointer”
  3. Il file reale viene caricato su uno storage LFS
  4. 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