TL;DR — Résumé Rapide
Maîtrisez les techniques Git avancées pour maintenir un historique propre, automatiser des tâches et déboguer les régressions avec rebase, bisect et hooks.
Au-delà des Bases de Git
La maîtrise des outils avancés de Git réduit les conflits de fusion (merge), automatise la qualité du code et diminue considérablement le temps de débogage.
1. Git Rebase : Maintenir un Historique Linéaire
Le Rebase déplace ou combine des commits à une nouvelle base.
Comment faire un Rebase
git checkout feature
git rebase main
Règle d’Or : Ne faites jamais de rebase sur une branche publique.
Rebase Interactif (Squash)
Pour regrouper (squash) plusieurs commits de travail en un seul commit propre :
git rebase -i HEAD~5
Modifiez pick en squash dans l’éditeur.
2. Git Bisect : Le Super-Pouvoir de Débogage
Git Bisect effectue une recherche binaire pour trouver le commit exact qui a introduit un bug.
- Démarrer :
git bisect start - Marquer comme cassé :
git bisect bad - Marquer une version qui fonctionne :
git bisect good <hash> - Testez. Si ça marche :
git bisect good. Sinon :git bisect bad. - Répétez jusqu’à trouver le coupable.
- Nettoyer :
git bisect reset
3. Git Hooks : Automatiser la Qualité
Les hooks sont des scripts personnalisés stockés dans .git/hooks exécutés automatiquement.
Exemple : Un hook pre-commit
Empêche les commits si les tests échouent :
#!/bin/sh
# pre-commit hook (Rendre exécutable avec chmod +x)
echo "Lancement des tests..."
npm test
if [ $? -ne 0 ]; then
echo "Les tests doivent passer avant le commit !"
exit 1
fi
Résumé
- Rebase (
git rebase -i) garde l’historique linéaire. - Bisect (
git bisect) trouve les régressions rapidement. - Hooks (
.git/hooks/pre-commit) appliquent localement les règles de qualité.