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:
- Crei
.git/hooks/pre-commit - Incolli questo codice
- 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 0Test 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.txtgit 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:
- Crei
.git/hooks/post-merge - Incolli questo codice
- 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 0Verifica 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
- Comprendere gli hook di Git
- Hook pre-commit e post-merge
- Personalizzazione della configurazione di Git
- Condividere gli hook con Husky