Leçon 10 / 20

Écarter une modification non préparée

15 min Git — versionner son code Gratuit

Objectif : Restaurer un fichier modifié à l’état du dernier commit sans toucher aux autres fichiers.

Une modification ajoutée par erreur peut rester dans un fichier alors que vous ne souhaitez pas l’enregistrer. Si vous l’écartez, vous devez vérifier précisément quel fichier sera restauré : l’opération supprime ses changements non préparés. Vous allez retirer un brouillon ajouté par erreur à `README.md`, sans modifier le reste du projet.

Le dépôt `suivi-site` est propre au début de l’exercice. Ses commits précédents, notamment « Créer la page d’accueil » et « Documenter les étapes Git du projet », restent inchangés. Comme vu dans « Lire l’état du dépôt », `git status` vous permet de contrôler les fichiers concernés ; la leçon « Comparer les changements non préparés » vous a appris à examiner leur contenu avec `git diff`.

Repérer la modification à écarter

Pour reproduire une erreur sans inventer de contenu préexistant dans votre README, ajoutez une ligne de brouillon à la fin du fichier. Cette ligne n’est qu’une modification de travail : vous ne la préparez pas et vous ne créez pas de commit. Dans un terminal placé à la racine du projet, exécutez les commandes suivantes.

Terminal
cd suivi-site
printf '\nBrouillon à supprimer\n' >> README.md
git status --short
git diff -- README.md
Résultat attendu
 M README.md

diff --git a/README.md b/README.md
index ...
--- a/README.md
+++ b/README.md
@@ ...
+Brouillon à supprimer

La sortie de `status` indique que `README.md` a été modifié, et le diff vous permet de confirmer que la ligne ajoutée est bien celle que vous voulez jeter. Avant de restaurer un fichier, vérifiez toujours cette cible et les changements affichés : Git ne peut pas deviner lesquels vous souhaitez conserver. Dans cet exemple, vous choisissez de supprimer tous les changements non préparés de `README.md`.

Restaurer uniquement README.md

Indiquez explicitement le chemin du fichier après `--`. Ce séparateur signale à Git que ce qui suit est un chemin, et non une option. La commande ci-dessous restaure seulement `README.md` ; elle ne demande ni de supprimer les modifications de tous les fichiers, ni de changer l’historique des commits.

Terminal
git restore -- README.md
git status
git diff -- README.md
Résultat attendu
On branch main
nothing to commit, working tree clean

Après la restauration, `git status` indique que l’arbre de travail est propre et le diff de `README.md` ne présente plus de changement. Git a remplacé le contenu modifié de ce fichier par son état de référence ; le dernier commit n’a pas été annulé ni réécrit. La commande n’ayant ciblé que `README.md`, elle n’a pas restauré les autres fichiers du projet.

Si plusieurs fichiers sont modifiés, restaurez uniquement celui dont vous avez contrôlé le diff. Vous pouvez ensuite relancer `git status` pour vérifier les changements restants : une modification présente dans un autre fichier doit toujours apparaître. Cette vérification évite de confondre l’abandon d’un brouillon avec le nettoyage complet du dépôt.

À retenir

  • Contrôlez le fichier et son diff avant d’écarter une modification.
  • `git restore -- README.md` restaure le fichier ciblé sans toucher aux autres chemins.
  • Les changements non préparés du fichier ciblé sont perdus ; sauvegardez d’abord tout travail à conserver.
  • Vérifiez l’état du dépôt après la restauration.

Dans la prochaine leçon, vous verrez comment retirer un fichier de la préparation sans effacer ses modifications de travail.

Envie d'aller plus loin ?

Les cours Enovatic sont gratuits et le resteront. Si vous cherchez un accompagnement encadré, nos formations professionnelles sont animées par les mêmes formateurs.