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 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:
- 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!
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
- Comprendere gli hook di Git
- Hook pre-commit e post-merge
- Personalizzazione della configurazione di Git
- Condividere gli hook con Husky