0Pricing
Git & GitHub Professional Workflow · Lezione

Hook pre-commit e post-merge

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

Hook pre-commit e post-merge è una lezione Git & GitHub Professional Workflow 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 Git & GitHub Professional Workflow, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Git & GitHub Professional Workflow 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!

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 Git & GitHub Professional Workflow, passa a CoddyKit PRO. Il corso Git & GitHub Professional Workflow 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 Git & GitHub Professional Workflow 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 Git & GitHub Professional Workflow?

Non è richiesta alcuna esperienza precedente. Git & GitHub Professional Workflow 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 Git & GitHub Professional Workflow?

Sì. Ogni lezione Git & GitHub Professional Workflow 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 Git & GitHub Professional Workflow