Comment annuler un commit Git ?

Annuler un commit Git est une action courante lorsque l’on souhaite revenir en arrière après une erreur ou un changement d’avis. Il existe plusieurs méthodes pour annuler un commit, selon le contexte et l’effet recherché.

1. Annuler le dernier commit tout en conservant les modifications

Si vous souhaitez simplement annuler le commit mais garder vos modifications prêtes pour un nouveau commit, utilisez :

git reset --soft HEAD~1

✅ Cela annule le commit mais laisse les fichiers dans le staging area, prêts à être revalidés.


2. Annuler le dernier commit et désindexer les fichiers

Si vous souhaitez annuler le commit et remettre les fichiers en mode « non suivis », tout en conservant les modifications :

git reset --mixed HEAD~1

✅ Les fichiers sont conservés mais ne sont plus indexés. Vous devrez les ajouter à nouveau avec git add avant de les revalider.


3. Annuler le dernier commit et supprimer les modifications

Si vous souhaitez annuler complètement le commit et perdre les modifications associées :

git reset --hard HEAD~1

Attention : Cette commande est irréversible. Les modifications supprimées ne pourront pas être récupérées.


4. Annuler un commit déjà poussé

Si le commit a déjà été envoyé sur un dépôt distant (git push), il faut le forcer pour le supprimer :

git reset --hard HEAD~1
git push --force

Attention : L’utilisation de --force peut poser problème si d’autres personnes ont récupéré la branche. Dans ce cas, utilisez plutôt git revert.


5. Créer un commit d’annulation propre (si le commit a été poussé)

Si vous avez déjà poussé votre commit et que vous ne voulez pas modifier l’historique :

git revert HEAD

✅ Cela crée un nouveau commit qui annule les changements du dernier commit, tout en conservant un historique propre.


Conclusion

Le choix de la méthode dépend de votre besoin :

  • git reset --soft : Garde les modifications en « staged ».
  • git reset --mixed : Garde les modifications mais désindexe les fichiers.
  • git reset --hard : Annule tout, y compris les modifications.
  • git revert : Crée un commit d’annulation (idéal si le commit est déjà poussé).

En fonction de votre workflow, assurez-vous de bien choisir l’option adaptée pour éviter toute perte de données. 😊