En el flujo diario de Git, perder cambios no siempre significa desastre. A veces has editado un archivo por error, has descartado una modificación que no querías tocar o simplemente necesitas volver a una versión anterior de un fichero concreto. En esos casos, git restore se convierte en una herramienta especialmente útil para recuperar archivos de forma precisa y segura.
Este comando forma parte de la evolución natural del trabajo con Git: después de aprender a añadir cambios con git add, revisar el estado con git status y comparar diferencias con git diff, llega el momento de deshacer cambios de manera controlada. Si ya conoces el enfoque general para revertir modificaciones, te resultará más fácil entender cuándo conviene usar git restore y otras opciones para deshacer cambios.
Qué hace exactamente git restore
git restore permite recuperar archivos desde una referencia concreta, normalmente el índice o un commit, y devolverlos al estado que tenían antes de una modificación. Su uso más habitual es deshacer cambios locales en archivos concretos sin afectar al resto del repositorio.
La idea clave es sencilla: no borra tu historial, no fusiona ramas ni reescribe commits. Se centra en restaurar contenido. Por eso es especialmente útil cuando quieres corregir un error puntual sin entrar en operaciones más amplias como git merge o cambios entre ramas que ya has aprendido a gestionar con git switch.
Cuándo usar git restore en lugar de otras soluciones
Hay varias situaciones en las que este comando brilla. La primera es cuando editas un archivo y decides que prefieres volver a la versión anterior sin conservar tus cambios. La segunda, cuando has preparado un archivo con git add pero quieres sacarlo del área de preparación antes de confirmar. La tercera, cuando necesitas recuperar un archivo desde un commit específico porque la versión actual ya no te sirve.
En otras palabras, git restore te ayuda a moverte entre estados del archivo con precisión. Esto encaja muy bien en entornos donde trabajas con ramas frecuentes, sincronización con remotos y varias iteraciones de una misma funcionalidad, algo habitual cuando se usan flujos con git push y git pull.
Sintaxis básica de git restore
La forma más simple de usarlo es esta:
# Restaura un archivo al estado del índice o del último estado disponible
git restore archivo.txt
Si el archivo tenía modificaciones locales no guardadas, este comando las descarta y recupera la versión de referencia. Es una operación directa, por lo que conviene verificar antes el estado del repositorio. Aquí es donde git status y git diff siguen siendo tus mejores aliados para evitar sorpresas.
Restaurar un archivo modificado
Imagina que has editado app.js y ya no quieres conservar esos cambios. Con el siguiente comando lo dejas como estaba:
# Elimina las modificaciones locales del archivo
git restore app.js
Este caso es el más común. Resulta ideal cuando has probado una solución y decides empezar de nuevo, o cuando una edición accidental ha alterado contenido que todavía no querías tocar.
Restaurar varios archivos a la vez
También puedes indicar varios ficheros en una sola orden:
# Recupera varios archivos en una sola ejecución
git restore index.html styles.css scripts/main.js
Esta opción es útil cuando trabajas en una misma tarea y quieres limpiar rápidamente una parte concreta del trabajo sin tocar el resto del proyecto.
Cómo recuperar archivos desde el área de preparación
Una de las dudas más frecuentes es qué hacer cuando ya has usado git add pero quieres deshacer esa preparación. En ese escenario, git restore puede sacar archivos del área de staging sin borrar necesariamente el contenido modificado.
# Quita un archivo del área de preparación y conserva los cambios en el рабочио
git restore --staged archivo.txt
Con --staged, el archivo deja de estar preparado para el commit, pero tus modificaciones siguen en el directorio de trabajo. Esto marca una diferencia importante frente a recuperar un archivo por completo. Si te interesa entender mejor esta separación entre working tree e índice, merece la pena repasar cómo funciona git commit y qué ocurre justo antes de confirmar cambios.
Recuperar una versión concreta de un archivo
A veces no basta con volver al último estado. Puede que quieras rescatar un archivo tal y como estaba en un commit concreto. Para eso, git restore permite indicar una referencia como origen.
# Restaura app.js desde un commit concreto
git restore --source=abc1234 app.js
En este ejemplo, abc1234 representa un identificador de commit. El archivo se extrae desde esa revisión y se copia al directorio de trabajo. Es una forma muy práctica de recuperar una versión antigua sin necesidad de hacer checkout completo a un commit.
Este enfoque resulta especialmente útil cuando detectas que un archivo funcionaba mejor hace unas versiones. En lugar de revisar todo el historial con git log de forma manual cada vez, puedes localizar la revisión adecuada y restaurarla de manera selectiva.
Diferencias entre git restore, git reset y git checkout
Una de las grandes ventajas de git restore es que reduce ambigüedades. Antes, muchas tareas de recuperación se hacían con git checkout, pero ese comando mezclaba funciones de cambio de rama y restauración de archivos. En consecuencia, era fácil confundir usos. Hoy, Git separa mejor las responsabilidades.
Por su parte, git reset cumple otros objetivos, especialmente relacionados con el estado del índice y el historial local. No conviene usarlo como sustituto directo de restore si lo que buscas es una restauración puntual. Si ya has trabajado con ramas, sabes que cada comando afecta a una capa distinta del repositorio, algo tan importante como entender cuándo crear una rama con git branch y cuándo limitarte a recuperar un archivo.
Buenas prácticas antes de restaurar archivos
Antes de ejecutar cualquier restauración, conviene revisar si los cambios que vas a perder realmente no te interesan. Un vistazo rápido a git status te dirá qué archivos están modificados, y git diff te mostrará el detalle exacto. Esa pequeña pausa evita sobrescribir trabajo útil por accidente.
Otra recomendación es usar commits frecuentes. Si guardas avances pequeños y descriptivos con git commit, siempre tendrás puntos de retorno claros. Esta práctica no solo facilita la recuperación de archivos, sino que también mejora la trazabilidad del proyecto cuando trabajas con otros desarrolladores o sincronizas un repositorio remoto mediante git remote.
Y si necesitas comparar una rama o traer cambios desde un origen externo, recuerda que operaciones como git fetch te ayudan a inspeccionar primero antes de integrar. Restaurar archivos es una pieza más dentro de un flujo de trabajo git bien organizado.
Errores comunes al usar git restore
El error más habitual es pensar que git restore y git restore –staged hacen lo mismo. No es así: el primer caso recupera el contenido del archivo en el directorio de trabajo, mientras que el segundo lo saca del área de preparación. Entender esta diferencia evita confusiones al preparar commits.
Otro fallo frecuente es asumir que el comando “deshace todo”. En realidad, actúa sobre archivos concretos y referencias concretas. Si quieres revertir cambios más amplios, necesitarás analizar bien el alcance antes de ejecutar nada. Por eso es tan importante conocer el contexto de tu historial, tus ramas y el estado actual del repositorio.
Conclusión
git restore es uno de los comandos más útiles para recuperar archivos en Git con precisión y sin dramatismos. Te permite descartar cambios locales, retirar archivos del staging y volver a estados anteriores de un fichero concreto con un control muy fino. En el día a día, eso significa menos errores, menos miedo a experimentar y más capacidad para corregir rápido.
Si ya dominas la creación de repositorios, la gestión de commits y el trabajo con ramas, este comando encaja como una pieza natural del flujo. La clave está en usarlo con intención: primero revisar, luego restaurar y, por último, seguir avanzando con seguridad.

Deja una respuesta