4. Deshacer cambios no deseados

Descartar cambios en staging

Ahora supón que hemos decidido hacer que nuestro Hello, World! destaque. ¡Vamos a ponerlo como encabezado!

¿Cómo lo hacemos?

Para hacerlo, ¿por qué no rodeamos el contenido de hello.html con las etiquetas <head>? El resultado debería quedar así:

Archivo: hello.html
<head>Hello, World!</head>
Tarea
Completada

Rodea el contenido de hello.html con las etiquetas <head> </head> y añade los cambios a staging.

Un momento... ¿He dicho etiquetas <head> </head>? Ay, perdón, claro que quería decir las etiquetas <h1> </h1>. Por desgracia, los cambios ya están en staging.

Vaya... ¿qué hacemos ahora?

Antes de tocar nada, ejecutemos git status para ver qué está pasando.

CONSEJO MUY ÚTIL: Puedes usar las flechas y del teclado para moverte por tu historial de comandos en la terminal. Es una forma estupenda de no volver a escribir comandos.

Tarea
Completada

Ejecuta el comando git status para comprobar el estado del repositorio.

Deberías ver algo parecido a esto:

Resultado:

On branch main Changes to be committed:   (use "git restore --staged <file>..." to unstage)       modified: hello.html

Sigamos el consejo del propio comando y quitemos los cambios del área de staging usando el comando git restore con la opción extra --staged.

Tarea
Completada

Ejecuta el comando git restore --staged . para limpiar el área de staging.

Comprobemos el estado otra vez.

Tarea
Completada

Ejecuta el comando git status para comprobar el estado del repositorio.

La salida debería tener este aspecto:

Resultado:

On branch main Changes not staged for commit:   (use "git add <file>..." to update what will be committed)   (use "git restore <file>..." to discard changes in working directory)       modified: hello.html

no changes added to commit (use "git add" and/or "git commit -a")

¡Sorpresa! Los cambios siguen ahí. Pero al menos ya no están en staging para el commit.

¿Y ahora qué?

Para descartarlos por completo, podemos ejecutar el comando git restore sin ninguna opción (igual que hemos hecho en el paso anterior del curso).

Tarea
Completada

Ejecuta git restore . para limpiar el directorio de trabajo.

Comprobemos el estado otra vez.

Tarea
Completada

Ejecuta el comando git status para comprobar el estado del repositorio.

La salida debería tener este aspecto:

Resultado:

On branch main nothing to commit, working tree clean

¡Y ya está! Los cambios se han descartado y el directorio de trabajo vuelve a estar limpio.

De hecho, podríamos haber devuelto el directorio de trabajo a un estado limpio de una sola vez. El comando git restore funciona en dos modos: el modo predeterminado --worktree, que restaura el directorio de trabajo, y el modo --staged, que restaura el área de staging. Podríamos haber usado ambas opciones a la vez para restaurar tanto el área de staging como el directorio de trabajo con git restore --staged --worktree ..

Next step
¿Quieres probar el modo historia?

Haz el curso como se pensó: avanza poco a poco y en orden, sin distracciones, mientras desbloqueas nuevas entradas de Gitopedia. Cuando quieras, continúa practicando con Git de verdad en VS Code, Cursor o Antigravity IDE.

Modo historia
GRATIS
pero requiere iniciar sesión