Ignorer des commits dans git blame
💡 Sujet
La commande git blame est très utile pour savoir qui a modifié une ligne et pourquoi.
Cependant, des commits de formatage massif (via prettier, black ou autres linters) peuvent "polluer" l'historique et rendre le blame inutile en pointant sur le formatage plutôt que sur la logique.
Le fichier .git-blame-ignore-revs permet de dire à Git d'ignorer ces commits spécifiques.
🔍 Récupérer le hash du commit
Pour ignorer un commit, il faut d'abord récupérer son hash complet (SHA-1).
Vous pouvez le trouver via l'interface de votre hébergeur (GitHub, GitLab) ou en ligne de commande :
# Voir l'historique récent pour copier le hash
git log -n 5
# Si vous venez de faire le commit, récupérez le hash actuel
git rev-parse HEAD💡 Astuce : Squash les commits
Si vous avez plusieurs commits de formatage (par exemple, un par dossier ou par extension), il est préférable de les squash en un seul commit avant de les ajouter au fichier. Cela permet de garder le fichier .git-blame-ignore-revs propre avec un seul hash pour toute la migration de style.
📝 Création du fichier
Créez un fichier nommé .git-blame-ignore-revs à la racine de votre projet.
Ajoutez-y les hashs des commits à ignorer. Il est conseillé d'ajouter des commentaires.
Exemple de contenu pour .git-blame-ignore-revs :
# Refonte massive du style (black)
e5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4
# Migration vers Prettier 3
a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0⚙️ Configuration
Pour que Git prenne en compte ce fichier localement, exécutez la commande suivante :
git config blame.ignoreRevsFile .git-blame-ignore-revsSi vous souhaitez que cette configuration soit partagée avec toute l'équipe sans qu'ils aient à lancer la commande manuellement, vous ne pouvez pas "forcer" la config git, mais GitHub et GitLab détectent automatiquement ce fichier s'il est présent à la racine.
Pour une utilisation locale persistante sans configuration manuelle par chaque dev, vous pouvez ajouter ceci dans un script de setup, mais l'auto-détection par les plateformes web est souvent suffisante pour la review.
🧩 Résumé
- 📄 Créez un fichier
.git-blame-ignore-revsà la racine. - 🆔 Ajoutez les hashs complets des commits de style/refactoring.
- 🧹 Astuce : Squash-ez vos commits de formatage pour n'avoir qu'un seul hash à ignorer.
- ⚙️ Activez-le localement avec
git config blame.ignoreRevsFile .git-blame-ignore-revs. - ☁️ GitHub et GitLab utilisent ce fichier automatiquement pour l'affichage du "Blame".