Formation Git en vidéo
👆 Cliquez sur l'image pour découvrir la formation en vidéo

Annuler tous les changements

Imaginez la situation suivante. Vous avez fait un commit pour enregistrer une version de votre projet qui fonctionne bien.

Le lendemain, vous faites de modifications sur plusieurs fichiers. Mais voilà, finalement, ces modifications posent problème. Vous voulez retourner en arrière. C’est-à-dire à l’état de votre projet avec la version du dernier commit.

Est-il possible de le faire juste avec une commande ?

Oui 😀. Et c’est ce que nous verrons ensemble.

Bien entendu, dans cet exemple, on considère que vous n’avez pas ajouté d’autres commits après des modifications.

Annuler les derniers changements

Pour bien comprendre, nous allons utiliser notre projet.

Dans « git commit - Part 2 », nous avons enregistré une version et c’était le dernier commit.

Maintenant, nous allons modifier notre projet.

Nous allons ajouter au fichier names.js qui est vide, le code suivant.

var nom = "Henrique";

Au fichier index.js qui contient déjà des informations, nous allons insérer une ligne en plus.

console.log("Salut, tout le monde");
// On insère une ligne
console.log("Une ligne");

N’oubliez pas de sauvegarder les modifications.

⛔️ Attention ! Ne pas faire de commit ensuite.

Tapons maintenant la commande ci-dessous qui nous permettra d’annuler tous les changements effectués depuis le dernier commit.

git reset --hard

Résultat

Que se passe-t-il ?

Les changements des fichiers names.js et index.js ont été annulés.

Le fichier names.js est de nouveau vide.

Et le fichier index.js est revenu à son état initial depuis le dernier commit.

console.log("Salut, tout le monde");

Illuster la mécanique de git reset --hard

Comment schématiser ce que nous avons fait ?

Et bien après le commit l’état est le suivant.

État après commit

C’est logique puisque nous n’avons pas fait de changement depuis le dernier commit.

On modifie ensuite les fichiers names.js et index.js.

État après commit

Les fichiers sont modifiés, mais ne sont pas commités.

On tape la commande git reset --hard.

État après git reset --hard

Et voilà. Lorsque l’on comprend bien la mécanique, tout devient plus simple.

En outre, si l’on avait exécuté git add . (les fichiers seraient dans l’état « staging area ») et ensuite git reset --hard les modifications auraient été bien supprimées.

Par contre lorsque l’on crée un fichier (status "untracked") la commande git reset --hard ne fonctionne pas. En d’autres termes, elle ne supprimera pas le fichier.

Résumé reset --hard

Plus tard dans la formation nous verrons qu’il sera possible d’utiliser la commande git reset --hard dans un autre contexte.