$_
StemLegacy
Phase 3Git en local

#12 Corriger ses erreurs

diff, restore, reset, stash

git diff -- Voir les modifications

Avant d'enregistrer quoi que ce soit, il est utile de voir exactement ce qui a changé. La commande git diff affiche les différences entre vos fichiers actuels et le dernier commit :

Voir les modifications
$ git diff
diff --git a/index.html b/index.html
--- a/index.html
+++ b/index.html
@@ -1,3 +1,4 @@
 <html>
+  <h1>Bonjour</h1>
   <body>
   </body>

Les lignes commençant par + sont les ajouts, celles par - sont les suppressions.

git restore -- Annuler des modifications

Si vous avez modifié un fichier et souhaitez revenir à sa version du dernier commit :

Annuler les modifications d'un fichier
$ git restore index.html

Si le fichier est déjà dans la staging area (après un git add), utilisez --staged pour le retirer du staging sans perdre les modifications :

Retirer du staging
$ git restore --staged index.html

git reset -- Annuler un commit

Pour annuler le dernier commit tout en conservant les modifications dans vos fichiers :

Annuler le dernier commit (garder les changements)
$ git reset HEAD~1
Unstaged changes after reset:
M	index.html

Pour annuler le dernier commit et supprimer toutes les modifications (attention, c'est irréversible !) :

Annuler et supprimer (dangereux)
$ git reset --hard HEAD~1
HEAD is now at a1b2c3d Initial commit

HEAD~1 signifie "un commit avant HEAD". Vous pouvez utiliser HEAD~2, HEAD~3, etc. pour remonter plus loin.

git stash -- Mettre de côté temporairement

Parfois, vous travaillez sur quelque chose mais devez changer de branche urgentement. git stash met vos modifications de côté temporairement :

Mettre de côté et restaurer
$ git stash
Saved working directory and index state WIP on main: a1b2c3d Initial commit

# ... faire autre chose, changer de branche ...

$ git stash pop
On branch main
Changes not staged for commit:
	modified:   index.html
Dropped refs/stash@{0}

Vous pouvez voir la liste des stash enregistrés avec git stash list :

Lister les stash
$ git stash list
stash@{0}: WIP on main: a1b2c3d Initial commit

Récapitulatif

Résumé
git diff                          # Voir les modifications
git restore fichier.txt           # Annuler les modifications
git restore --staged fichier.txt  # Retirer du staging
git reset HEAD~1                  # Annuler le commit (garder les changements)
git reset --hard HEAD~1           # Annuler le commit (tout supprimer)
git stash                         # Mettre de côté
git stash pop                     # Restaurer le stash
git stash list                    # Lister les stash

À vous de jouer

Essayez les commandes pour corriger des erreurs dans le terminal ci-dessous. Commencez par git diff pour voir les modifications.

terminal — bash
user@stemlegacy:~/mon-projet$