Les Hooks de Git : Comprendre les Fichiers post-commit et pr

Voici une proposition de méta-déscription pour votre article : "Apprenez à maximiser l'efficacité de vos commandes Git avec nos guides pratiques ! Découvrez co

Mahmoud DEVO
Mahmoud DEVO
December 28, 2025 5 min read
Les Hooks de Git : Comprendre les Fichiers post-commit et pr

Gestion des Hooks Git : une Vue d’Ensemble

Les hooks Git sont un outil puissant pour automatiser les tâches et améliorer la sécurité de votre projet. Dans cet article, nous allons explorer les différentes étapes de la vie d’un commit et comment utiliser les hooks pour vous aider à gérer efficacement vos projets Git.

Étape 1 : Comprendre les Hooks

Les hooks sont des scripts qui s’exécutent automatiquement à chaque fois que vous exécutez une commande Git. Ils peuvent être utilisés pour vérifier la cohérence des commits, avertir les développeurs de problèmes potentiels ou même annuler l’opération en cours si nécessaire.

24.6 : Post-checkout

Le hook post-checkout est appelé chaque fois que vous exécutez la commande git checkout. Il peut être utilisé pour nettoyer le répertoire de travail d’automatiquement générés fichiers qui pourraient causer des confusions.

#!/bin/sh

# Nettoyez les fichiers automatiquement générés
rm -rf $(find . -name '*.tmp')

Ce hook accepte trois paramètres :

  • La référence de l’ancien HEAD
  • La référence du nouveau HEAD
  • Un drapeau indiquant si le checkout était une branche ou un fichier (1 ou 0, respectivement)

24.7 : Post-commit

Le hook post-commit est appelé immédiatement après l’exécution de la commande git commit. Il ne peut pas modifier le résultat du commit et est donc principalement utilisé pour les notifications.

#!/bin/sh

# Envoi un e-mail pour signaler que le commit a été effectué
echo "Le commit a été effectué avec succès" | mail -s "Commit réussi" dev@example.com

Ce hook ne prend aucun paramètre et son statut de sortie n’affecte pas la commande git commit.

24.8 : Post-receive

Le hook post-receive est appelé après une opération de push réussie. Il est principalement utilisé pour les notifications.

#!/bin/sh

# Envoi un e-mail pour signaler que le push a été effectué
echo "Le push a été effectué avec succès" | mail -s "Push réussi" dev@example.com

Ce hook ne prend aucun paramètre mais reçoit la même information que pre-receive via l’entrée standard.

24.9 : Pre-commit

Le hook pre-commit est appelé avant chaque opération de commit pour vérifier les informations qui seront ajoutées au projet. Il peut être utilisé pour exécuter des tests automatiques pour s’assurer que le commit ne brise pas la fonctionnalité existante.

#!/bin/sh

# Exécutez les tests unitaires avant de commit
make test-unit

Ce hook ne prend aucun paramètre et sortir avec un statut non-zéro annule l’opération de commit.

24.10 : Prepare-commit-msg

Le hook prepare-commit-msg est appelé après le hook pre-commit pour populer le texte éditeur avec un message de commit automatique. Il peut être utilisé pour modifier les messages de commit automatiques pour les commits mergés ou squassés.

#!/bin/sh

# Modifiez le message de commit automatique
echo "Merge: $1 -> $2" > .gitmessage.txt

Ce hook prend un à trois arguments :

  • Le nom d’un fichier temporaire contenant le message
  • Le type de commit (message, template, merge ou squassé)
  • La référence SHA1 du commit pertinent

24.11 : Pre-rebase

Le hook pre-rebase est appelé avant la commande git rebase pour modifier la structure du code. Il peut être utilisé pour s’assurer que l’opération de rebasage est appropriée.

#!/bin/sh

# Vérifiez si l'opération de rebasage est appropriée
if [ "$1" != "master" ]; then
  echo "L'opération de rebasage n'est pas autorisée sur cette branche"
  exit 1
fi

Ce hook prend deux paramètres :

  • La référence de la branche upstream qui a été forkée
  • La référence de la branche en cours de rebasage (vide lorsque la branche courante est rébasée)

24.12 : Pre-receive

Le hook pre-receive est appelé avant chaque opération de push pour vérifier les informations qui seront ajoutées au projet. Il peut être utilisé pour appliquer des politiques de développement.

#!/bin/sh

# Vérifiez si la branche poussée est autorisée
if [ "$1" != "master" ] && [ "$1" != "dev" ]; then
  echo "La branche $1 n'est pas autorisée"
  exit 1
fi

Ce hook ne prend aucun paramètre mais reçoit chaque référence poussée via l’entrée standard.

24.13 : Update

Le hook update est appelé après le hook pre-receive pour appliquer les modifications apportées aux références. Il peut être utilisé pour modifier les informations de la référence en cours d’actualisation.

#!/bin/sh

# Modifiez l'information de la référence en cours d'actualisation
ref=$(echo "$1" | cut -d '/' -f 2)
new_ref=$(echo "$2" | cut -d '/' -f 2)
echo "La référence $ref a été mise à jour pour point vers $new_ref"

Ce hook prend trois paramètres :

  • Le nom de la référence en cours d’actualisation
  • La référence ancienne stockée dans la référence
  • La référence nouvelle stockée dans la référence

Clonage des Répertoires

25.1 : Clonage Shallow

Le clonage shallow permet de récupérer uniquement les commits récents d’un projet, ce qui peut être utile lorsque vous ne souhaitez pas télécharger l’ensemble du historique du projet.

git clone [repo_url] --depth 1

Ce commandement téléchargera uniquement le dernier commit du projet. Cependant, vous pourriez rencontrer des problèmes de résolution des conflits dans un répertoire cloné en mode shallow.

25.2 : Clonage Régulier

Le clonage régulier permet de récupérer l’ensemble du projet, y compris le historique complet et toutes les branches.

git clone [url]

Ce commandement téléchargera l’ensemble du projet dans un répertoire avec le même nom que le nom du projet.

25.3 : Clonage d’une Branche Spécifique

Le clonage d’une branche spécifique permet de récupérer uniquement la branche souhaitée et non toutes les branches.

git clone --branch [branche_nom] [url]

Ce commandement téléchargera uniquement la branche branche_nom du projet. Vous pouvez également utiliser l’option -b pour obtenir le même résultat.

25.4 : Clonage Récursif

Le clonage récursif permet de récupérer l’ensemble du projet, y compris tous les sous-modules.

git clone [url] --recursive

Ce commandement téléchargera l’ensemble du projet et également tous les sous-modules. Si les sous-modules eux-mêmes contiennent des sous-modules supplémentaires, Git téléchargera également ceux-ci.

Conseils et Astuces

  • Utilisez les hooks pour automatiser les tâches répétitives dans votre projet.
  • Utilisez les hooks pre-commit pour vérifier la cohérence des commits avant de procéder au commit.
  • Utilisez les hooks post-commit pour envoyer des notifications après chaque commit.
  • Utilisez les hooks pre-rebase pour s’assurer que l’opération de rebasage est appropriée.

Prochaines Étapes

Dans la prochaine partie, nous allons explorer plus en détail les hooks Git et comment les utiliser dans votre projet. Nous allons également aborder les différents types de hooks et leur utilisation spécifique.

Note : J’ai pris la liberté d’omettre certaines sections qui ne semblaient pas pertinentes pour le contenu du blog article, mais si vous souhaitez que j’y revienne, n’hésitez pas à me le faire savoir.

Advertisement

In-Article Ad

Dev Mode

Share this article

Mahmoud DEVO

Mahmoud DEVO

Senior Full-Stack Developer

I'm a passionate full-stack developer with 10+ years of experience building scalable web applications. I write about Vue.js, Node.js, PostgreSQL, and modern DevOps practices.

Enjoyed this article?

Subscribe to get more tech content delivered to your inbox.

Related Articles