Versioning avec Git & GitHub · Étape 06

Restaure un fichier du working tree ou de l’index

Choisis la bonne source et la bonne destination pour annuler une modification locale sans confondre working tree, index et commit.

Durée indicative · ~1 h 20Niveau débutantPrérequis conseillé · Leçon 5 — historique, diffs et objets commitPratique · TP
L’idée reçue

« Restaurer un fichier signifie toujours revenir au dernier commit. »

Par défaut, git restore restaure le working tree depuis l’index. Avec –staged, il restaure l’index depuis HEAD.

01Observe les trois versions

./module2-git-undo-history.sh setup
cd /tmp/soria-git-undo-$USER/restore
git show HEAD:app.conf
git show :app.conf
cat app.conf

02Compare avant d’annuler

git diff -- app.conf
git diff --cached -- app.conf
git status --short

Le premier diff compare working tree et index. Le second compare index et HEAD.

03Restaure le working tree depuis l’index

git restore app.conf
cat app.conf
git status --short

La version expérimentale de l’index remplace la version cassée du working tree. Cette opération écrase la modification non commitée du fichier ciblé.

04Retire le fichier de l’index

git restore --staged app.conf
git status --short
git diff -- app.conf

La modification reste sur disque mais n’est plus préparée pour le prochain commit.

05Restaure depuis HEAD

git restore app.conf
git status --porcelain
cat app.conf

06Choisis explicitement une source

git restore --source=HEAD~1 -- README.md
git restore --source=HEAD --staged --worktree -- app.conf

La seconde commande aligne index et working tree sur HEAD. Utilise-la seulement après inspection des deux diffs.

Challenge autonome

Explique la perte évitée

Produis trois versions d’un fichier, puis montre comment conserver la version indexée, comment conserver seulement la version de travail et comment revenir entièrement à HEAD.

Ce que tu retiens

Une restauration doit nommer mentalement sa source et sa destination. Vérifie toujours working tree et index avant d’écraser un état local.

Ta progression

Chargement de l’état… Se connecter pour synchroniser.