0Pricing
DevOps Bootcamp · Lezione

Manutenzione e pulizia del repository

Impari a utilizzare comandi come `git gc` e `git prune` per ripulire e ottimizzare il repository Git locale.

Manutenzione e pulizia del repository è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp include 4 lezioni in totale.

Introduzione alla manutenzione di Git

Con il passare del tempo, i repository Git locali possono accumulare file non necessari e diventare meno efficienti. È come avere una stanza in disordine!

In questa lezione imparerà a ripulire e ottimizzare i repository Git usando comandi potenti come git gc e git prune. In questo modo i progetti continueranno a funzionare senza problemi.

Spiegazione dell'object store di Git

Per prima cosa, capiamo come Git memorizza i dati. Git salva la cronologia del progetto come una serie di «oggetti»:

  • Blobs: contenuto dei file
  • Trees: directory e relativo contenuto
  • Commits: istantanee del progetto in un determinato momento
  • Tags: puntatori a commit specifici

Questi oggetti possono essere memorizzati come «loose objects» oppure compressi in «packfile» per una maggiore efficienza.

Introduzione a `git gc` (Garbage Collect)

Il comando git gc sta per «garbage collect». È lo strumento integrato di Git per ripulire e ottimizzare il repository.

Le sue attività principali includono:

  • Creazione di packfile dagli oggetti sciolti: compressione dei singoli oggetti in un unico packfile.
  • Eliminazione degli oggetti non raggiungibili: eliminazione degli oggetti a cui non fa più riferimento alcun commit, branch o tag (dopo un determinato periodo).
  • Rimozione dei vecchi packfile: eliminazione dei file di oggetti compressi obsoleti.

Questo processo rende il repository più piccolo e veloce.

Eseguire `git gc` (uso generale)

Può eseguire manualmente git gc in qualsiasi momento. Git lo esegue anche automaticamente in background quando effettua determinate operazioni, come il push o il fetch.

In genere è sicuro eseguirlo, ma è buona prassi assicurarsi di non avere lavoro non sottoposto a commit che potrebbe essere necessario recuperare prima di una pulizia importante.

Provi a eseguirlo nel terminale:

git gc

Comprendere l'output di `git gc`

Quando esegue git gc, visualizzerà un output simile al seguente:

Counting objects: 1234, done. Compressing objects: 100% (987/987), done. Writing objects: 100% (1234/1234), done. Total 1234 (delta 567), reused 0 (delta 0) Removing duplicate objects: 100% (256/256), done. Pruning objects: 100% (123/123), done.

Questo mostra Git mentre impacchetta gli oggetti, scrive nuovi packfile ed elimina (rimuove) gli oggetti vecchi e non raggiungibili. I numeri variano in base allo stato del repository.

Approfondimento su `git prune`

Sebbene git gc gestisca molte attività di pulizia, git prune si occupa nello specifico di rimuovere gli oggetti "dangling" o "unreachable".

  • Oggetti dangling: sono oggetti presenti nel repository, ma non più referenziati da alcun commit, branch o tag e che inoltre non fanno parte di un packfile.
  • Oggetti unreachable: è un termine simile a dangling, ma più ampio. Possono esistere per vari motivi, ad esempio dopo un rebase o un reset che riscrive la cronologia.

git prune elimina questi oggetti se sono più vecchi del tempo di scadenza predefinito, generalmente 2 settimane.

Esecuzione diretta di `git prune`

Di solito non è necessario eseguire direttamente git prune, perché viene chiamato da git gc. Tuttavia, può essere utilizzato per una pulizia più mirata.

Per vedere cosa farebbe git prune senza eliminare effettivamente nulla, utilizzi l'opzione --dry-run:

git prune --dry-run

Potatura con scadenza

Per impostazione predefinita, git prune (e la fase di potatura di git gc) rimuove solo gli oggetti più vecchi di due settimane. È possibile sovrascrivere questo comportamento usando l'opzione --expire.

Questa opzione è utile se desidera eliminare in modo aggressivo oggetti dangling creati molto di recente, ad esempio dopo un rebase sperimentale che è certo di non dover annullare.

Ad esempio, per potare gli oggetti più vecchi di 1 giorno:

git prune --expire=1.day

Differenze rispetto a `git reflog expire`

È importante non confondere git prune con git reflog expire. Sebbene siano entrambi legati alla pulizia, hanno scopi diversi:

  • git prune: elimina oggetti Git effettivi (blob, alberi e commit) dal database degli oggetti.
  • git reflog expire: pulisce le voci nel reflog (la cronologia locale delle posizioni visitate da HEAD), rendendo più difficile trovare determinati commit, ma senza eliminare gli oggetti.

Presti sempre attenzione quando modifica la cronologia o esegue comandi di pulizia!

Verifica della manutenzione

Quale delle seguenti descrive meglio il ruolo principale di git gc?

Riepilogo e prossimi passaggi

Congratulazioni! Ha imparato a mantenere ordinati ed efficienti i repository Git.

  • git gc: il comando tutto-in-uno per la garbage collection, la pacchettizzazione degli oggetti e la potatura.
  • git prune: individua e rimuove in modo specifico gli oggetti unreachable e dangling più vecchi di una determinata scadenza.

Una manutenzione regolare contribuisce a mantenere fluido il flusso di lavoro con Git e impedisce ai repository di occupare troppo spazio su disco. Continui così!

Domande Frequenti

La lezione «Manutenzione e pulizia del repository» è gratuita?

Sì — il testo completo di «Manutenzione e pulizia del repository» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp include 4 lezioni in totale.

Cosa imparerò in «Manutenzione e pulizia del repository»?

Impari a utilizzare comandi come `git gc` e `git prune` per ripulire e ottimizzare il repository Git locale. Eserciti DevOps Bootcamp con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare DevOps Bootcamp?

Non è richiesta alcuna esperienza precedente. DevOps Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Manutenzione e pulizia del repository»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione DevOps Bootcamp?

Sì. Ogni lezione DevOps Bootcamp include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Git Reflog e recupero della cronologia
  2. Git Bisect per il debug
  3. Manutenzione e pulizia del repository
  4. Riscrivere la cronologia con git filter-repo
← Torna a DevOps Bootcamp