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.

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
.

Les fichiers sont modifiés, mais ne sont pas commités.
On tape la commande 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.

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