Comprendere gli hook di Git
Esplori i diversi tipi di hook di Git e i punti di esecuzione nel workflow di Git.
Comprendere gli hook di Git è una lezione Git & GitHub Professional Workflow gratuita su CoddyKit. Questa è la lezione 1 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.
Cosa sono gli hook di Git?
Benvenuto negli hook di Git! Gli hook di Git sono script potenti e personalizzabili che Git esegue automaticamente prima o dopo eventi come il commit, il push o la ricezione di commit inviati.
Li si può considerare checkpoint o azioni automatizzati nel flusso di lavoro Git. Aiutano a imporre gli standard del progetto, automatizzare le attività e integrarsi con altri sistemi.
Dove si trovano gli hook
Ogni repository Git include una directory .git/hooks. Al suo interno si trovano script di esempio per gli hook (di solito con estensione .sample).
Per attivare un hook, basta rimuovere l'estensione .sample e rendere eseguibile il file. Git lo eseguirà al momento opportuno.
- Posizione:
.git/hooks/ - File: script shell (Bash, Python, Ruby ecc.)
- Attivazione: rinominare il file e renderlo eseguibile
Lato client e lato server
Gli hook di Git sono suddivisi in due categorie principali in base al luogo in cui vengono eseguiti:
- Hook lato client: vengono eseguiti sul computer locale (ad esempio prima di un commit o di un rebase). Servono per automatizzare il flusso di lavoro personale e applicare le regole in locale.
- Hook lato server: vengono eseguiti sul server Git remoto (ad esempio quando si esegue il push del codice in un repository condiviso). Applicano le regole dell'intero progetto per tutti.
Hook lato client: pre-commit
L'hook pre-commit è uno degli hook lato client più comuni. Viene eseguito *prima* che Git crei ufficialmente un commit.
Se lo script pre-commit termina con uno stato diverso da zero, Git annulla il commit. È ideale per attività come:
- analisi statica del codice (controllo degli errori di stile)
- esecuzione di test unitari
- controllo della presenza di file di grandi dimensioni o dati sensibili
Hook lato client: commit-msg
L'hook commit-msg viene eseguito *dopo* l'inserimento del messaggio di commit, ma *prima* che il commit venga finalizzato.
È utile per verificare che i messaggi dei commit rispettino convenzioni o formati specifici. Ad esempio, può controllare se:
- il messaggio inizia con l'ID di un ticket (ad esempio
[JIRA-123]) - la lunghezza del messaggio rientra nei limiti
- sono presenti o assenti determinate parole chiave
Hook lato client: post-commit
L'hook post-commit viene eseguito *immediatamente dopo* la creazione corretta di un commit.
A differenza di pre-commit o commit-msg, questo hook non può modificare l'esito del commit. Viene spesso usato per notifiche o integrazioni, ad esempio per:
- notificare i membri del team
- aggiornare uno strumento di gestione dei progetti
- avviare una build di integrazione continua (CI), anche se per questo scopo sono più comuni gli hook lato server
Hook del server: pre-receive
Passando agli hook lato server, pre-receive viene eseguito *prima* che qualsiasi riferimento, come branch o tag, venga aggiornato nel repository remoto.
Questo hook è potente per applicare policy fondamentali del repository, ad esempio:
- Impedire i push diretti al branch
main - Assicurarsi che tutti i commit siano firmati
- Convalidare l'identità dell'autore del commit
Se questo hook termina con un codice diverso da zero, l'intero push viene rifiutato.
Hook del server: post-receive
L'hook post-receive viene eseguito *dopo* che un push ha aggiornato correttamente i riferimenti nel repository remoto.
Come post-commit, questo hook non può rifiutare il push. Viene comunemente utilizzato per:
- Avviare pipeline CI/CD
- Aggiornare strumenti esterni per il monitoraggio dei problemi
- Inviare notifiche email al team
- Eseguire il deploy del codice in un ambiente di staging
Creazione di un hook semplice
Per creare un hook, è sufficiente creare un file con il nome dell'hook, ad esempio pre-commit, nella directory .git/hooks/. Creiamone uno molto semplice:
#!/bin/sh
# This pre-commit hook will always succeed
echo "Running pre-commit hook..."
exit 0Rendere eseguibili gli hook
Dopo aver creato lo script dell'hook, è necessario renderlo eseguibile. In caso contrario, Git non lo eseguirà. Utilizzi il comando chmod nel terminale:
chmod +x .git/hooks/pre-commit
Ora, ogni volta che proverà a eseguire un commit, Git eseguirà questo script!
Verifica rapida: tempistica degli hook
Gli hook di Git vengono eseguiti in momenti specifici del flusso di lavoro. Comprenderne la tempistica è fondamentale per utilizzarli in modo efficace.
Riepilogo: comprendere gli hook di Git
Ha mosso il primo passo nel potente mondo degli hook di Git!
- Gli hook di Git sono script che automatizzano le azioni durante gli eventi di Git.
- Si trovano nella directory
.git/hooks/del repository. - Gli hook possono essere lato client (sulla macchina locale) o lato server (nel repository remoto).
- Hook fondamentali come
pre-commitepre-receivepossono applicare policy bloccando le operazioni. - Hook come
post-commitepost-receiveservono per notifiche o integrazioni successive all'azione.
Ora passeremo all'implementazione di esempi pratici di hook specifici!
Domande Frequenti
La lezione «Comprendere gli hook di Git» è gratuita?
Sì — il testo completo di «Comprendere gli hook di Git» è 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 «Comprendere gli hook di Git»?
Esplori i diversi tipi di hook di Git e i punti di esecuzione nel workflow di Git. 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 1 di 4.
Quanto tempo richiede la lezione «Comprendere gli hook di Git»?
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