Comment annuler les derniers commits locaux dans git

Comment annuler les derniers commits locaux dans Git

Git par la pratique

Lorsque vous travaillez avec Git, il peut arriver que vous fassiez un commit trop rapidement, par erreur, ou que vous souhaitiez simplement revenir en arrière. Heureusement, Git propose plusieurs moyens d’annuler un commit, tout en offrant différentes options selon que vous souhaitez conserver ou supprimer vos modifications.

Dans cet article, nous allons explorer plusieurs méthodes pour annuler un commit localement en utilisant les commandes suivantes :

Nous expliquerons également les notions de HEAD, HEAD^, HEAD~1, et leurs implications.


1. Préparer un environnement de test

Si vous n’avez pas encore de projet Git sous la main, vous pouvez cloner un dépôt existant. Prenons par exemple le dépôt Spring PetClinic disponible sur GitHub :

$ git clone https://github.com/spring-projects/spring-petclinic.git

Une fois le dépôt cloné, placez-vous dans le dossier du projet :

$ cd spring-petclinic

Affichons l’historique des commits avec :

$ git log --oneline

Vous devriez voir une liste des derniers commits.


2. Faire un commit de test

Modifions un fichier pour tester les différentes méthodes d’annulation.


3. Annuler un commit avec git reset

a) Annuler un commit et conserver les modifications (--soft)

Si vous souhaitez annuler le commit tout en conservant les modifications dans l’index (staging area), utilisez :

$ git reset --soft HEAD~1

Explication :

Vérifiez avec :

$ git status

Vos fichiers sont toujours marqués comme “prêts pour le commit”.


b) Annuler un commit et remettre les fichiers dans l’espace de travail (--mixed)

Si vous voulez annuler le commit et déplacer les fichiers modifiés hors du staging area :

$ git reset --mixed HEAD~1

c) Annuler un commit et supprimer complètement les modifications (--hard)

Si vous souhaitez annuler le commit et supprimer toutes les modifications associées :

$ git reset --hard HEAD~1

4. Annuler un commit sans modifier l’historique (git revert)

Plutôt que d’effacer un commit avec reset, il est souvent préférable d’utiliser git revert, surtout si vous travaillez en équipe.

$ git revert HEAD

Après exécution, Git ouvre un éditeur de texte pour modifier le message du commit de revert. Validez avec :wq (Vim) ou CTRL+X (Nano).

Vérifiez avec :

$ git log --oneline

Vous verrez un nouveau commit indiquant que le précédent a été annulé.


5. Comprendre HEAD, HEAD^, HEAD~1

Par exemple :

$ git reset --hard HEAD~2

Reviendra deux commits en arrière en supprimant les modifications des commits annulés.


6. Quelle méthode choisir ?

Situation Commande recommandée
Annuler le dernier commit en gardant les modifications git reset --soft HEAD~1
Annuler le dernier commit et retirer les fichiers du staging git reset --mixed HEAD~1
Annuler le dernier commit et supprimer toutes les modifications git reset --hard HEAD~1
Annuler un commit proprement en conservant l’historique git revert HEAD

Conclusion

Git offre plusieurs manières d’annuler un commit en fonction de vos besoins. La commande git reset permet de revenir en arrière avec différents niveaux de conservation des modifications, tandis que git revert est recommandé pour une collaboration en équipe.

En maîtrisant ces techniques, vous pourrez mieux gérer votre historique Git et corriger rapidement des erreurs sans impacter négativement votre workflow.

💡 Astuce : Avant d’utiliser git reset --hard, assurez-vous de ne pas perdre des modifications importantes en les sauvegardant dans une autre branche avec git branch sauvegarde-temporaire.


📢 N’hésitez pas à partager cet article et à poser vos questions en commentaire !