Il arrive que l'on fasse une erreur et que l'on veuille revenir à une version antérieure. Voici comment annuler des modifications.

illustration logo git

Annulation des dernières modifications locales qui n'ont pas été validées

Si vous avez apporté des modifications qui ne vous plaisent pas et qu'elles n'ont pas encore été validées, procédez comme suit :

  • Dans votre terminal (Terminal, Git Bash ou Windows Command Prompt), naviguez jusqu'au dossier de votre dépôt Git.
  • Lancez git status et vous devriez voir le fichier concerné listé.
    Exécutez la commande suivante, en remplaçant filename.html par votre chemin d'accès au fichier (que vous pouvez copier et coller à partir de la commande git status) :
    git checkout nomfichier.html
  • Ce fichier a maintenant été rétabli tel qu'il était lors du commit précédent (avant vos changements).

Comment annuler le dernier commit si il a été poussé ?

Si vous souhaitez annuler un commit spécifique, vous pouvez le rétablir comme suit :

  • Dans votre terminal (Terminal, Git Bash ou Windows Command Prompt), naviguez jusqu'au dossier de votre dépôt Git.
  • Exécutez git status et assurez-vous que vous avez un arbre de travail propre.
  • Chaque commit a un hash unique (qui ressemble à quelque chose comme 2f5451f). Vous devez trouver le hash du commit que vous voulez annuler. Voici deux endroits où vous pouvez voir le hachage des commits :
    • Dans l'historique des livraisons sur le site web de GitHub ou Bitbucket.
    • Dans votre terminal (Terminal, Git Bash ou Windows Command Prompt), exécutez la commande git log --oneline.
  • Une fois que vous connaissez le hash du commit que vous voulez annuler, exécutez la commande suivante (en remplaçant 2f5451f par le hash de votre commit) :
    git revert 2f5451f --no-edit
NOTE : L'option --no-edit empêche git de vous demander de saisir un message de validation. Si vous n'ajoutez pas cette option, vous vous retrouverez dans l'éditeur de texte VIM. Pour quitter VIM, appuyez sur : pour entrer en mode commande, puis sur q pour quitter, et enfin sur Return (Mac) ou Enter (Windows).

Ceci fera un nouveau commit qui est l'opposé du commit existant, ramenant le(s) fichier(s) à leur état précédent comme s'il n'avait jamais été modifié.
Si vous travaillez avec un dépôt distant, vous pouvez maintenant pousser ces changements :
git push

Comment annuler le dernier commit si il n'a pas été poussé ?

Si vous avez fait une erreur sur votre dernier commit et que vous n'avez pas encore poussé, vous pouvez l'annuler. Par exemple, vous avez peut-être ajouté quelques fichiers et fait un commit, puis vous avez immédiatement réalisé que vous aviez oublié quelque chose. Vous pouvez annuler le commit, et ensuite faire un nouveau commit (correct). Cela vous permettra de garder votre historique plus propre.

Dans votre terminal (Terminal, Git Bash ou Windows Command Prompt), naviguez jusqu'au dossier de votre dépôt Git.
Exécutez cette commande :
git reset --soft HEAD~

ASTUCE : Ajoutez un nombre à la fin pour annuler plusieurs commits. Par exemple, pour annuler les deux derniers commits (en supposant que les deux n'ont pas été poussés), exécutez git reset --soft HEAD~2.
NOTE : git reset --soft HEAD~ est identique à git reset --soft HEAD^que vous pouvez voir dans la documentation Git.

Votre dernier commit sera maintenant annulé. Vos modifications restent en place, et les fichiers sont à nouveau mis à disposition (par exemple avec git add) afin que vous puissiez faire des modifications supplémentaires ou ajouter les fichiers manquants. Vous pouvez alors faire un nouveau commit.

Annuler des modifications locales qui ont été commit (mais pas poussées)

Si vous avez fait des commits locaux que vous n'aimez pas, et qu'ils n'ont pas encore été poussés, vous pouvez réinitialiser les choses à un bon commit précédent. Ce sera comme si les mauvais commits n'avaient jamais eu lieu. Voici comment procéder :

  • Dans votre terminal (Terminal, Git Bash, ou Windows Command Prompt), naviguez jusqu'au dossier de votre repo Git.
  • Lancez git status et vérifiez que vous avez un arbre de travail propre.
    Chaque commit a un hash unique (qui ressemble à quelque chose comme 2f5451f). Vous devez trouver le hachage du dernier bon commit (celui sur lequel vous voulez revenir). Voici deux endroits où vous pouvez voir le hachage des commits :
  • Dans l'historique des commits sur le site web de GitHub ou Bitbucket.
    Dans votre terminal (Terminal, Git Bash ou Windows Command Prompt), exécutez la commande git log --oneline.
  • Une fois que vous connaissez le hash du dernier bon commit (celui vers lequel vous voulez revenir), exécutez la commande suivante (en remplaçant 2f5451f par le hash de votre commit) :
git reset 2f5451f
git reset --hard 2f5451f
NOTE : Si vous faites git reset, les commits seront supprimés, mais les changements apparaîtront comme non commités, vous donnant accès au code. C'est l'option la plus sûre, parce que peut-être vous vouliez une partie de ce code et vous pouvez maintenant faire des changements et de nouveaux commits qui sont bons. Souvent, cependant, vous voudrez annuler les commits et supprimer le code, ce que fait git reset --hard.