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.

  1. Démarrer : git bisect start
  2. Marquer comme cassé : git bisect bad
  3. Marquer une version qui fonctionne : git bisect good <hash>
  4. Testez. Si ça marche : git bisect good. Sinon : git bisect bad.
  5. Répétez jusqu’à trouver le coupable.
  6. 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é.

Articles Connexes