Aller au contenu
English
Compte : non connecté, synchronisation possible Mon apprentissage
Selectionner le thème
English

Réécriture et correction de l'historique Git

  • 10 min

Par mis à jour le

Améliorer cette page

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.

BesoinOutilGuide
Fusionner plusieurs commits en un seulgit rebase -i → squash / fixupRéécrire l'historique
Reformuler le message d'un commit passégit rebase -i → rewordRéécrire l'historique
Supprimer un fichier sensible de tout l'historiquegit filter-repoRéécrire l'historique
Comprendre ce que fait reset --hardLes 3 arbres GitReset démystifié
Annuler un merge ratégit merge --abortMerge avancé
Éviter de re-résoudre le même conflitgit rerereMerge avancé

Réécrire l'historique enseigne le rebase interactif (squash, fixup, reword, edit, drop) et git filter-repo pour supprimer un fichier sensible de tout l'historique. Reset démystifié explique les 3 arbres de Git (HEAD, Index, Working Dir) et les modes --soft, --mixed et --hard, pour comprendre ce que reset fait vraiment avant de l'utiliser. Merge avancé apprend à annuler un merge, à employer -Xours et -Xtheirs, merge --squash et rerere pour mémoriser les résolutions de conflits.

  • git rebase -i HEAD~N ouvre un éditeur pour réordonner, fusionner ou supprimer les N derniers commits, uniquement sur des commits locaux
  • git reset --soft HEAD~1 annule le dernier commit mais garde les modifications stagées, pratique pour re-structurer
  • git reset --hard HEAD~1 annule le commit ET les modifications, récupérable via git reflog pendant 30 jours, le commit écarté n'étant plus accessible depuis aucune référence
  • git rerere mémorise les conflits résolus et les applique automatiquement lors des prochains merges identiques
  • git filter-repo (et non git filter-branch) est l'outil recommandé pour réécrire tout l'historique

Ce projet vous est utile ?

Les guides, formations, quiz et labs restent gratuits. Si vous les utilisez régulièrement, vous pouvez contribuer à leur maintenance et à leur développement.

Devenir membre de soutien (nouvel onglet) Soutenir une fois (nouvel onglet) En savoir plus

Suivez aussi le projet sur LinkedIn