Git restore: qué es, para qué sirve y cómo usarlo
¿Modificaste un archivo por error y quieres recuperar su versión anterior? Con git restore puedes descartar cambios locales, restaurar archivos y sacar elementos del Staging Area de forma rápida y segura. En esta guía aprenderás cuándo usarlo, cómo funciona y ejemplos prácticos paso a paso.

Índice
1. ¿Qué es Git restore?
git restore es un comando de Git cuya función principal es deshacer cambios realizados en archivos.
Su objetivo es devolver uno o varios archivos a un estado anterior, eliminando las modificaciones que todavía no han sido confirmadas mediante un commit.
En otras palabras, permite recuperar una versión anterior de un archivo sin modificar el historial del proyecto.
Este comando fue incorporado a partir de Git 2.23 para separar funciones que anteriormente realizaba git checkout, haciendo que Git resulte mucho más intuitivo.
1.1. ¿Para qué sirve?
Entre sus principales funciones se encuentran:
- Restaurar archivos modificados.
- Recuperar un archivo desde el último commit.
- Deshacer cambios que todavía no fueron agregados al Staging Area.
- Quitar archivos del Staging Area.
- Restaurar archivos desde un commit específico.
- Recuperar varios archivos al mismo tiempo.
2. ¿Cuándo es recomendable utilizarlo?
Este comando suele utilizarse cuando:
- Modificaste un archivo por error.
- Hiciste pruebas y quieres descartarlas.
- Eliminaste contenido accidentalmente.
- Cambiaste varias líneas y deseas volver al último estado guardado.
- Agregaste un archivo al Staging Area por equivocación.
Es uno de los comandos más seguros de Git porque no modifica el historial del repositorio, únicamente afecta los archivos seleccionados.
3. ¿Cómo funciona Git restore?
Para entender su funcionamiento es importante recordar las tres áreas principales de Git:
- Working Directory: donde editas tus archivos.
- Staging Area: donde preparas los cambios antes del commit.
- Repository: donde se almacenan los commits.
Dependiendo de los parámetros utilizados, git restore puede actuar sobre:
- únicamente el Working Directory;
- el Staging Area;
- ambos al mismo tiempo.
4. Cómo usarlo desde la terminal de VS Code
Utilizar git restore desde la terminal integrada de Visual Studio Code es un proceso muy sencillo. Si ya tienes abierto tu proyecto y este se encuentra inicializado como un repositorio Git, solo debes seguir estos pasos.
Paso 1. Abrir la terminal de Visual Studio Code
Lo primero que debes hacer es abrir la terminal integrada de VS Code. Para ello puedes ir al menú:
Terminal → New TerminalLenguaje del código: PHP (php)
O, si lo prefieres, utilizar el atajo de teclado:
Ctrl + Ñ
Al hacerlo, se abrirá una terminal en la parte inferior del editor, desde donde podrás ejecutar todos los comandos de Git sin necesidad de salir de Visual Studio Code.
Paso 2. Verificar los archivos modificados (opcional, pero recomendado)
Antes de restaurar un archivo es recomendable comprobar qué archivos tienen cambios pendientes. Para ello ejecuta:
git status
Git mostrará un listado con todos los archivos modificados, permitiéndote identificar cuál deseas restaurar.
Paso 3. Ejecutar Git restore
Una vez identificado el archivo, utiliza la siguiente sintaxis:
git restore nombre-del-archivo
Por ejemplo, si deseas restaurar el archivo index.html, el comando sería:
git restore index.htmlLenguaje del código: CSS (css)
Paso 4. Comprobar el resultado
Al ejecutar el comando, Git descartará todas las modificaciones realizadas en ese archivo después del último commit y lo restaurará exactamente al estado en el que se encontraba cuando se realizó dicho commit.
Si vuelves a abrir el archivo, comprobarás que todas las modificaciones descartadas han desaparecido.
Además, puedes ejecutar nuevamente:
git status
Si no quedan cambios pendientes, Git mostrará que el árbol de trabajo está limpio (working tree clean).
Importante: git restore elimina los cambios del archivo de forma inmediata. Si esas modificaciones no fueron guardadas previamente en un commit (o mediante otra herramienta como git stash), no podrán recuperarse posteriormente. Por ello, conviene revisar siempre los cambios antes de ejecutar este comando.
5. Cómo usarlo sin utilizar la terminal
Visual Studio Code permite realizar esta acción mediante su interfaz gráfica.
Paso 1
Abrir el panel Control de código fuente.
Paso 2
Verás todos los archivos modificados.
Por ejemplo:
index.html
estilos.cssLenguaje del código: CSS (css)
Paso 3
Haz clic derecho sobre el archivo.
Paso 4
Selecciona:
Discard Changes
o
Descartar cambios
(según el idioma de VS Code).
Paso 5
Visual Studio Code ejecutará internamente un git restore.
El resultado será exactamente el mismo.
6. Ejemplo de uso de Git restore
Supongamos que estamos desarrollando nuestro sitio web y el archivo index.html contiene el siguiente código:
<h1>Curso de Git</h1>Lenguaje del código: HTML, XML (xml)
Cuando terminamos esa parte del trabajo ejecutamos los siguientes comandos:
git add index.html
git commit -m "Agregar título principal"Lenguaje del código: JavaScript (javascript)
A partir de este momento, Git guarda esa versión del archivo como el último commit.
Continuamos trabajando y realizamos varias modificaciones en index.html. Por ejemplo, agregamos un subtítulo, un párrafo y una imagen:
<h1>Curso de Git</h1>
<h2>¿Qué es Git?</h2>
<p>Git es un sistema de control de versiones distribuido.</p>
<img src="git.png" alt="Logo de Git">Lenguaje del código: HTML, XML (xml)
Después de revisar los cambios, nos damos cuenta de que todo lo que acabamos de agregar no era lo que queríamos y preferimos volver al estado en el que se encontraba el archivo cuando hicimos el último commit.
Para ello ejecutamos el siguiente comando:
git restore index.htmlLenguaje del código: CSS (css)
Al hacerlo, Git descarta todas las modificaciones realizadas después del último commit y restaura el archivo a la versión que había quedado guardada en ese commit.
El archivo volverá a verse así:
<h1>Curso de Git</h1>Lenguaje del código: HTML, XML (xml)
Como puedes observar, el <h2>, el párrafo y la imagen desaparecieron porque nunca llegaron a formar parte de un commit. git restore simplemente eliminó esos cambios y recuperó la última versión confirmada del archivo.
Importante: los cambios descartados con git restore se pierden. Si no fueron guardados previamente en un commit (o mediante otra herramienta como git stash), Git no podrá recuperarlos posteriormente.
Este ejemplo refleja una situación muy habitual: realizar varias pruebas en un archivo, descubrir que el resultado no es el esperado y utilizar git restore para volver rápidamente a la última versión guardada sin afectar el historial del repositorio.
7. Restaurar varios archivos al mismo tiempo
También es posible restaurar varios archivos con un solo comando.
Por ejemplo:
git restore index.html estilos.css app.jsLenguaje del código: CSS (css)
Git descartará las modificaciones de los tres archivos.
8. Restaurar todos los archivos modificados
Si deseas descartar absolutamente todos los cambios del Working Directory puedes utilizar:
git restore .
El punto (.) indica que Git debe restaurar todos los archivos del directorio actual y sus subdirectorios.
Importante: este comando eliminará todas las modificaciones no confirmadas del Working Directory. Úsalo con cuidado, ya que los cambios descartados no podrán recuperarse mediante Git si nunca fueron guardados en un commit.
9. Restaurar un archivo desde un commit específico
No siempre es necesario recuperar la versión del último commit.
También puedes restaurar un archivo tal como estaba en otro commit utilizando:
git restore --source=HASH index.html
Ejemplo:
git restore --source=a1b2c3d index.html
Git copiará la versión de index.html correspondiente a ese commit hacia el Working Directory.
10. Quitar archivos del Staging Area
Además de restaurar archivos modificados, git restore también puede sacar archivos del área de preparación.
Supongamos que ejecutaste:
git add index.htmlLenguaje del código: CSS (css)
Ahora el archivo está preparado para el próximo commit.
Si cambias de opinión, puedes retirarlo del Staging Area con:
git restore --staged index.htmlLenguaje del código: CSS (css)
Este comando no elimina los cambios del archivo. Solo lo quita del área de preparación, por lo que seguirá apareciendo modificado en el Working Directory.
Este comportamiento es muy útil cuando agregas un archivo por error y aún no quieres incluirlo en el próximo commit.
11. Git restore vs Git checkout
Antes de Git 2.23 era habitual utilizar:
git checkout index.htmlLenguaje del código: CSS (css)
Actualmente se recomienda:
git restore index.htmlLenguaje del código: CSS (css)
¿Por qué?
Porque git checkout tenía múltiples funciones:
- cambiar de rama;
- cambiar de commit;
- restaurar archivos.
En cambio, Git separó esas responsabilidades:
git switchpara cambiar de ramas.git restorepara restaurar archivos.
Esto hace que los comandos sean mucho más claros y fáciles de aprender.
12. Errores comunes
12.1. Intentar recuperar un archivo que nunca fue confirmado
Si un archivo es completamente nuevo y todavía no existe en ningún commit, git restore no podrá restaurarlo porque Git no tiene una versión previa almacenada.
12.2. Pensar que recupera commits eliminados
git restore no trabaja sobre el historial del repositorio.
Solo restaura archivos.
Si necesitas volver a un commit anterior deberás utilizar otros comandos como git checkout (en modo de inspección), git switch, git revert o git reset, según el caso.
12.3. Usarlo sin revisar los cambios
Antes de ejecutar git restore es recomendable revisar qué modificaciones vas a descartar mediante:
git diff
Así evitarás perder cambios que realmente querías conservar.
13. Buenas prácticas al utilizarlo
- Revisa siempre los cambios con
git diffantes de restaurarlos. - Comprueba el estado del repositorio con
git status. - Utiliza
git restoresolo cuando estés seguro de que no necesitas conservar las modificaciones. - Si los cambios podrían ser útiles más adelante, considera hacer un commit o utilizar
git stashantes de descartarlos. - Aprovecha la integración de Visual Studio Code para identificar visualmente qué archivos han sido modificados antes de restaurarlos.
14. Resumen
git restore es el comando recomendado para deshacer cambios en archivos sin alterar el historial del repositorio. Permite restaurar archivos modificados, recuperar versiones anteriores desde un commit específico y retirar archivos del Staging Area con la opción --staged.
Dominar este comando te ayudará a trabajar con mayor tranquilidad, ya que podrás experimentar con tu código sabiendo que siempre tendrás una forma rápida y segura de volver al último estado guardado cuando sea necesario.
