git restore
Restaura archivos en el directorio de trabajo o en el área de preparación
El comando 'git restore' devuelve archivos a una versión conocida. Por defecto sobrescribe un archivo de trabajo con su versión preparada y descarta tus ediciones. Con --staged saca un archivo del área de preparación y conserva tus ediciones en el disco. Con --source puedes recuperar un archivo tal como estaba en cualquier commit. Se añadió en Git 2.23 para asumir la parte de git checkout que restaura archivos.
Sinopsis
git restore [<options>] [--source=<tree>] [--staged] [--worktree] [--] <pathspec>...Opciones
Elegir la opción adecuada
restore frente a los comandos antiguos
Las mismas acciones, antes y ahora
| Comando | Equivalente antiguo | Efecto |
|---|---|---|
git restore app.js | git checkout -- app.js | Descartar ediciones no preparadas |
git restore --staged app.js | git reset app.js | Quitar de la preparación, conservar ediciones |
git restore --source=HEAD~1 app.js | git checkout HEAD~1 -- app.js | Archivo de un commit antiguo |
Ejemplos
Descartar ediciones
git restore app.jsDescarta los cambios no preparados de app.js.
Quitar un archivo de la preparación
git restore --staged app.jsSaca app.js del área de preparación y conserva las ediciones.
Archivo de un commit antiguo
git restore --source=HEAD~2 app.jsRecupera app.js tal como estaba hace dos commits.
Ejemplos de flujos de trabajo
git add .Todo está preparado
git restore --staged README.mdREADME.md sale de la preparación
git commit -m "Add to cart"El commit deja fuera README.md
Solución de problemas
error: pathspec 'x' did not match any file(s) known to git
Causa: El archivo no tiene seguimiento o la ruta es incorrecta
Comprueba la ruta con git status; restore solo funciona con archivos con seguimiento
Restauré un archivo y perdí mis ediciones
Causa: git restore sobrescribe el archivo de trabajo
Las ediciones sin guardar se perdieron; quizá el historial de deshacer de tu editor aún las tenga. La próxima vez, haz git stash primero
Consejos y trampas
Buenas prácticas
- ✓Ejecuta git diff antes de git restore para ver lo que vas a descartar.
- ✓Usa git restore --staged para quitar de la preparación — nunca toca tus ediciones.
- ✓Prefiere git restore a git checkout para archivos: su nombre dice lo que hace.
Errores comunes
- ✗Ejecutar git restore <file> sobre ediciones que querías conservar — las ediciones descartadas no se recuperan.
- ✗Esperar que git restore --staged descarte tu edición: solo la quita de la preparación.
- ✗Usar git restore para deshacer un commit — restaura archivos; para commits usa git reset o git revert.
Preguntas frecuentes
git restore cambia archivos. git reset mueve la rama a otro commit (y también puede restablecer archivos).
No para ediciones de trabajo descartadas: Git nunca las guardó. Quitar de la preparación con --staged no pierde nada.
Git 2.23 o posterior. En versiones anteriores usa git checkout -- <file> y git reset <file>.