#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 :
$ 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 :
$ git restore index.htmlSi 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 :
$ git restore --staged index.htmlgit reset -- Annuler un commit
Pour annuler le dernier commit tout en conservant les modifications dans vos fichiers :
$ git reset HEAD~1
Unstaged changes after reset:
M index.htmlPour annuler le dernier commit et supprimer toutes les modifications (attention, c'est irréversible !) :
$ git reset --hard HEAD~1
HEAD is now at a1b2c3d Initial commitHEAD~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 :
$ 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 :
$ git stash list
stash@{0}: WIP on main: a1b2c3d Initial commitRécapitulatif
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.