git restore
Restaurer des fichiers dans le répertoire de travail ou la zone de préparation
La commande 'git restore' remet des fichiers dans une version connue. Par défaut, elle remplace un fichier de travail par sa version préparée, ce qui efface vos modifications. Avec --staged, elle retire un fichier de la zone de préparation et garde vos modifications sur le disque. Avec --source, vous pouvez récupérer un fichier tel qu’il était dans n’importe quel commit. Elle a été ajoutée dans Git 2.23 pour reprendre la moitié « restauration de fichiers » de git checkout.
Synopsis
git restore [<options>] [--source=<tree>] [--staged] [--worktree] [--] <pathspec>...Options
Choisir la bonne option
restore face aux anciennes commandes
Les mêmes actions, anciennes et nouvelles
| Commande | Ancien équivalent | Effet |
|---|---|---|
git restore app.js | git checkout -- app.js | Jeter les modifications non préparées |
git restore --staged app.js | git reset app.js | Retirer de la préparation, garder les modifications |
git restore --source=HEAD~1 app.js | git checkout HEAD~1 -- app.js | Fichier d’un ancien commit |
Exemples
Annuler des modifications
git restore app.jsJeter les modifications non préparées de app.js.
Désindexer un fichier
git restore --staged app.jsRetirer app.js de la zone de préparation en gardant les modifications.
Fichier d’un ancien commit
git restore --source=HEAD~2 app.jsRécupérer app.js tel qu’il était deux commits plus tôt.
Exemples de workflows
git add .Tout est préparé
git restore --staged README.mdREADME.md est retiré de la préparation
git commit -m "Add to cart"Le commit laisse README.md de côté
Dépannage
error: pathspec 'x' did not match any file(s) known to git
Cause : Le fichier n’est pas suivi ou le chemin est faux
Vérifiez le chemin avec git status ; restore ne fonctionne que sur les fichiers suivis
J’ai restauré un fichier et perdu mes modifications
Cause : git restore écrase le fichier de travail
Les modifications non enregistrées sont perdues ; l’historique d’annulation de votre éditeur les a peut-être encore. La prochaine fois, faites d’abord git stash
Astuces et pièges
Bonnes pratiques
- ✓Lancez git diff avant git restore pour voir ce que vous allez jeter.
- ✓Utilisez git restore --staged pour retirer de la préparation — il ne touche jamais à vos modifications.
- ✓Préférez git restore à git checkout pour les fichiers : son nom dit ce qu’il fait.
Erreurs fréquentes
- ✗Lancer git restore <file> sur des modifications à garder — des modifications jetées ne se récupèrent pas.
- ✗S’attendre à ce que git restore --staged efface votre modification : il la retire seulement de la préparation.
- ✗Utiliser git restore pour annuler un commit — il restaure des fichiers ; pour les commits, utilisez git reset ou git revert.
FAQ
git restore modifie des fichiers. git reset déplace la branche vers un autre commit (et peut aussi réinitialiser des fichiers).
Pas pour les modifications de travail jetées : Git ne les a jamais stockées. Retirer de la préparation avec --staged ne perd rien.
Git 2.23 ou plus récent. Sur les versions plus anciennes, utilisez git checkout -- <file> et git reset <file>.