descartar-cambios-en-git-con-restore

Descartando cambios con Git Restore

  • 4 min

El comando git restore es el comando para descartar o deshacer cambios locales en el directorio de trabajo y sacar archivos del Staging Area.

Durante el desarrollo, a veces vas realizar modificaciones que finalmente no queremos conservar. Estás editando un archivo, empiezas a cambiar cosas, pruebas una idea loca y al final, no te gusta lo que has cambiado.

Ya sea porque estas haciendo pruebas o hayas has metido la pata, necesitamos una forma de revertir un archivo a su estado anterior. Necesitamos un “Ctrl+Z”, pero para Git.

En este artículo veremos cómo utilizar este git restore para descartar cambios en nuestro directorio de trabajo o sacar archivos del Staging Area.

Antiguamente esta tarea se realizaba con git checkout, un comando sobrecargado de funciones que solía generar confusión.

Para solucionar esto, las versiones modernas de Git introdujeron git restore.

Descartar cambios locales

Este es el caso más común. He roto el archivo, quiero volver atrás. No quieres tu versión acutal del fichero, quieres que vuelva a estar idéntico al último commit.

El comando es:

git restore nombre_archivo.ext
Copied!

También puedes usar . para restaurar todos los archivos modificados de la carpeta actual:

git restore .
Copied!

Git va a su base de datos (al último commit), busca esa versión del archivo y la copia en tu Working Directory, machacando lo que tuvieras escrito.

¡Cuidado! Esta operación es destructiva. A diferencia de otras cosas en Git, con restore no hay deshacer. Si restauras un archivo que no habías guardado con commit, los cambios que tuvieras escritos en él se pierden para siempre.

Sacar archivos del Staging Area

Este es el otro uso principal de restore. Supongamos el siguiente caso:

  1. Modificas app.js (un cambio bueno).
  2. Modificas claves.txt (un archivo con contraseñas que NO quieres subir).
  3. Por inercia, escribes git add ..

Ahora tienes claves.txt en el Staging Area. Si haces commit, la lías, porque quedaría grabado en el histórico de Git.

Necesitas sacarlo del Stage, pero sin borrar el archivo de tu disco (porque quieres tu fichero de contraseñas).

git restore --staged claves.txt
Copied!

Al usar la bandera --staged, le estamos diciendo a Git: “Restaura la versión del archivo que hay en el Stage para que coincida con la del último commit”.

El resultado es que el archivo sale del área de preparación y vuelve a estar simplemente Modified (o Untracked si era nuevo).

Antiguamente esto se hacía con el críptico git reset HEAD claves.txt. Ahora, con restore, es mucho más lógico