Réécrire l’historique Git, c’est possible — à condition de savoir
exactement ce que vous touchez. Ces 3 guides couvrent les modifications
d’historique les plus courantes : nettoyer des commits avant de pusher,
comprendre ce que fait réellement reset, et gérer des merges complexes.
La règle d’or reste constante : réécrire est sûr sur ce qui n’est pas encore partagé. Dès qu’un commit est pushé et que d’autres l’ont récupéré, la réécriture engendre des conflits pour toute l’équipe.
Quand utiliser chaque outil ?
Section intitulée « Quand utiliser chaque outil ? »| Besoin | Outil | Guide |
|---|---|---|
| Fusionner plusieurs commits en un seul | git rebase -i → squash / fixup | Réécrire l’historique |
| Reformuler le message d’un commit passé | git rebase -i → reword | Réécrire l’historique |
| Supprimer un fichier sensible de tout l’historique | git filter-repo | Réécrire l’historique |
Comprendre ce que fait reset --hard | Les 3 arbres Git | Reset démystifié |
| Annuler un merge raté | git merge --abort | Merge avancé |
| Éviter de re-résoudre le même conflit | git rerere | Merge avancé |
Guides de cette section
Section intitulée « Guides de cette section » Réécrire l'historique Rebase interactif (squash, fixup, reword, edit, drop), git filter-repo pour supprimer un fichier sensible de tout l'historique.
Reset démystifié Les 3 arbres de Git (HEAD, Index, Working Dir), reset --soft/--mixed/--hard : comprenez ce que reset fait vraiment avant de l'utiliser.
Merge avancé Annuler un merge, -Xours/-Xtheirs, merge --squash, rerere pour mémoriser les résolutions de conflits.
À retenir
Section intitulée « À retenir »git rebase -i HEAD~Nouvre un éditeur pour réordonner, fusionner ou supprimer les N derniers commits — uniquement sur des commits locauxgit reset --soft HEAD~1annule le dernier commit mais garde les modifications stagées — pratique pour re-structurergit reset --hard HEAD~1annule le commit ET les modifications — récupérable viagit reflogpendant 90 joursgit rereremémorise les conflits résolus et les applique automatiquement lors des prochains merges identiquesgit filter-repo(et nongit filter-branch) est l’outil recommandé pour réécrire tout l’historique
Prochaines étapes
Section intitulée « Prochaines étapes » Debug et recherche Trouver le commit coupable avec bisect, investiguer l'historique avec blame et log -S.
Vue d'ensemble des outils avancés Tous les outils avancés Git en un coup d'œil.