DevOps Bootcamp · Lezione

Hook pre-commit e post-merge

Implementi esempi pratici di hook pre-commit per il linting e hook post-merge per le notifiche.

Lezione 2 di 412 passaggi

Hook pre-commit e post-merge è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 2 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 pratica agli hook di Git

Nella lezione precedente abbiamo imparato a conoscere gli hook di Git e i loro diversi tipi. Ora passiamo alla pratica!

Approfondiremo l'implementazione di due hook potenti: pre-commit e post-merge. Questi consentono di automatizzare i controlli prima di un commit e le azioni dopo un merge.

Pre-commit: il vostro controllo qualità

L'hook pre-commit viene eseguito prima di un'operazione di commit, ma dopo aver utilizzato git add per preparare le modifiche.

  • È perfetto per applicare standard di qualità e stile del codice.
  • Può essere utilizzato per eseguire linter, strumenti di controllo dello stile o persino test unitari di base.
  • Se lo script termina con uno stato diverso da zero, il commit viene automaticamente interrotto.

In questo modo, nel repository entra solo codice di alta qualità e conforme agli standard.

Configurazione dell'hook pre-commit

Per creare un hook pre-commit, è necessario creare un file eseguibile chiamato pre-commit all'interno della directory .git/hooks/ del progetto.

Git fornisce hook di esempio con estensione .sample. Rimuova questa estensione e aggiunga il proprio script.

Ricordi di rendere eseguibile il file utilizzando: chmod +x .git/hooks/pre-commit

Esempio: impedire i commit con "TODO"

Creiamo un semplice hook pre-commit che impedisca di eseguire il commit di file contenenti ancora la parola "TODO". È una pratica comune per assicurarsi che nessuna attività incompleta finisca nel codice.

Lo script controllerà tutti i file preparati alla ricerca di questa parola chiave. Se la trova, interromperà il commit.

Hook pre-commit: niente TODO!

Ecco un semplice script shell per il file .git/hooks/pre-commit. Controlla la presenza della parola "TODO" nei file .txt preparati.

Passaggi:

  1. Crei .git/hooks/pre-commit
  2. Incolli questo codice
  3. Esegua chmod +x .git/hooks/pre-commit
#!/bin/sh

# Check staged .txt files for "TODO"
for file in $(git diff --cached --name-only --diff-filter=ACM | grep '\.txt$'); do
  if grep -q "TODO" "$file"; then
    echo "ERROR: Found 'TODO' in staged file: $file"
    echo "Please remove TODOs before committing."
    exit 1
  fi
done

exit 0

Test dell'hook pre-commit

Per testare questo hook, crei innanzitutto un file, ad esempio test.txt, e vi aggiunga "TODO: Finish this". Poi provi a eseguire il commit:

git add test.txt
git commit -m "Add test file"

Il commit dovrebbe essere interrotto e verrà visualizzato il messaggio di errore dell'hook. Rimuova "TODO" da test.txt e il commit verrà eseguito correttamente!

Post-merge: automatizzare le attività dopo i merge

L'hook post-merge viene eseguito automaticamente dopo il completamento corretto di un comando git merge.

  • È utile per le attività di integrazione da eseguire dopo l'unione del codice.
  • Tra gli esempi vi sono le notifiche ai membri del team, l'aggiornamento delle dipendenze del progetto, ad esempio npm install, o l'esecuzione di uno script di build.
  • A differenza di pre-commit, questo hook non influisce sull'esito del merge.

È un ottimo modo per automatizzare i processi successivi a un merge.

Configurazione dell'hook post-merge

Come per pre-commit, crei un file chiamato post-merge all'interno della directory .git/hooks/.

Si assicuri nuovamente che sia un file eseguibile:

chmod +x .git/hooks/post-merge

Questo script verrà quindi eseguito ogni volta che un merge viene completato nel repository.

Esempio: avviso di completamento del merge

Creiamo un hook post-merge che stampi semplicemente un messaggio nella console, confermando che è stato appena eseguito un merge. In uno scenario reale, potrebbe avviare una pipeline CI/CD o inviare una notifica a un'applicazione di chat.

Hook post-merge: notifica

Ecco un semplice script shell per il file .git/hooks/post-merge. Stampa un messaggio di conferma.

Passaggi:

  1. Crei .git/hooks/post-merge
  2. Incolli questo codice
  3. Esegua chmod +x .git/hooks/post-merge
#!/bin/sh

# This hook runs after a merge operation.
echo "--- Post-merge hook triggered ---"
echo "A merge has just completed in your repository."
echo "You might want to run 'npm install' or 'bundle install' now."
echo "---------------------------------"

exit 0

Verifica dell'hook: pre-commit o post-merge

Quale delle seguenti attività verrebbe normalmente gestita da un hook pre-commit?

Riepilogo: gli hook in azione

Ottimo lavoro! In questa lezione ha imparato a implementare hook di Git pratici.

  • Gli hook pre-commit fungono da controllo qualità ed eseguono verifiche come linting o test *prima* di un commit.
  • Gli hook post-merge automatizzano le azioni *dopo* un merge, come notifiche o aggiornamenti delle dipendenze.

Questi hook sono strumenti potenti per applicare standard e automatizzare i flussi di lavoro nel repository Git. Continui a esplorare gli altri tipi di hook per personalizzare ulteriormente la sua esperienza con Git!

Gratis per iniziare

Impara DevOps Bootcamp con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
142
Lezioni
568

Domande Frequenti

La lezione «Hook pre-commit e post-merge» è gratuita?

Sì — il testo completo di «Hook pre-commit e post-merge» è 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 «Hook pre-commit e post-merge»?

Implementi esempi pratici di hook pre-commit per il linting e hook post-merge per le notifiche. 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 2 di 4.

Quanto tempo richiede la lezione «Hook pre-commit e post-merge»?

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. Comprendere gli hook di Git
  2. Hook pre-commit e post-merge
  3. Personalizzazione della configurazione di Git
  4. Condividere gli hook con Husky
← Torna a DevOps Bootcamp