Tuto — maîtriser le rebase interactif
git bisect efficace. Le rebase interactif ( git rebase -i ) est l'outil pour réécrire une branche avant de la pousser — fusionner, renommer, réordonner, supprimer des commits. Voici comment le manier sans se brûler.
Ouvrir le todo
git rebase -i prend une base : tous les commits qui viennent après elle deviennent éditables. On vise généralement les N derniers commits de la branche courante.
Les commandes du quotidien
- ›
reword(r) : garder le commit mais réécrire son message. - ›
squash(s) : fusionner dans le commit précédent en conservant les deux messages. - ›
fixup(f) : comme squash, mais jeter le message du commit fusionné — parfait pour
- ›
edit(e) : s'arrêter sur le commit pour modifier le code ou le découper. - ›
drop(d) : supprimer le commit entièrement.
git add et git rebase --continue . À tout moment, git rebase --abort ramène la branche à son état d'avant.
Le fixup automatique
--fixup puis --autosquash ordonnent tout pour vous :
La règle d'or
git push --force divergera de leur copie et provoquera des conflits désagréables. On rebase donc uniquement une branche locale , pas encore poussée — ou une branche dont on est le seul propriétaire, avec un git push --force-with-lease qui refuse d'écraser un travail inattendu.
Récupérer après une erreur
git reflog garde une trace de chaque position de HEAD , même celles « perdues » par la réécriture.
Le rebase interactif réécrit l'histoire pour la rendre racontable : un commit = une idée, un message clair. Garde-le pour le local, sécurise tes pushs avec --force-with-lease, et souviens-toi que le reflog est ton filet.