git restore

Instantáneas básicas

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>...
[ ] opcional| o<arg> valor a sustituir... repetible--flag opción

Opciones

Haz clic en una opción para desplegarla

Principiante (2)

Restaura el área de preparación: quita el archivo de la preparación. Tu archivo de trabajo no se toca.

RecomendadoLa forma segura de quitar de la preparación: tus ediciones siguen en el disco

Ejemplo

git restore --staged app.js

Restaura el directorio de trabajo (por defecto). Junto con --staged, se restauran ambos.

Cuando haga faltaDestino por defecto; combínalo con --staged para restablecer ambos

Ejemplo

git restore --staged --worktree app.js

Intermedio (2)

Toma el archivo del commit, rama o tag indicado en lugar del área de preparación.

RecomendadoRecuperar un archivo de cualquier commit sin mover la rama

Ejemplo

git restore --source=HEAD~1 app.js

Elige fragmentos (hunks) de forma interactiva: git pregunta por cada cambio.

Cuando haga faltaDescartar fragmentos elegidos y conservar el resto

Ejemplo

git restore -p app.js

Elegir la opción adecuada

restore frente a los comandos antiguos

Las mismas acciones, antes y ahora

ComandoEquivalente antiguoEfecto
git restore app.jsgit checkout -- app.jsDescartar ediciones no preparadas
git restore --staged app.jsgit reset app.jsQuitar de la preparación, conservar ediciones
git restore --source=HEAD~1 app.jsgit checkout HEAD~1 -- app.jsArchivo de un commit antiguo

Ejemplos

Descartar ediciones

git restore app.js

Descarta los cambios no preparados de app.js.


Quitar un archivo de la preparación

git restore --staged app.js

Saca app.js del área de preparación y conserva las ediciones.


Archivo de un commit antiguo

git restore --source=HEAD~2 app.js

Recupera app.js tal como estaba hace dos commits.

Ejemplos de flujos de trabajo

1
git add .

Todo está preparado

2
git restore --staged README.md

README.md sale de la preparación

3
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

A:

git restore cambia archivos. git reset mueve la rama a otro commit (y también puede restablecer archivos).

A:

No para ediciones de trabajo descartadas: Git nunca las guardó. Quitar de la preparación con --staged no pierde nada.

A:

Git 2.23 o posterior. En versiones anteriores usa git checkout -- <file> y git reset <file>.