Saltar al contenido
Contenido de Programación

Lección 2.5.3: El historial y volver atrás

Lo que guardas con Git se puede mirar y recuperar: el historial, los cambios y cualquier versión anterior.

La idea

Guardar versiones sirve de algo si se pueden mirar y recuperar. Tres comandos:

  • git log: la lista de commits.
  • git diff: qué has cambiado desde el último.
  • git restore: volver atrás.

El historial

Terminal
git log --oneline
Terminal
7b1e0d4 (HEAD -> main) Añade la tabla del 3
3f2a1c9 Añade el saludo
  • Cada commit tiene un identificador: 7b1e0d4.
  • El más reciente va arriba.
  • HEAD marca dónde estás.

Si la lista no cabe, Git la enseña por páginas: la tecla q sale.

Qué has cambiado

Cambia el texto de hola.js por «Adiós desde un archivo», guarda y:

Terminal
git diff
Terminal
diff --git a/hola.js b/hola.js
index 5c1b2a3..8d4e6f1 100644
--- a/hola.js
+++ b/hola.js
@@ -1 +1 @@
-console.log("Hola desde un archivo");
+console.log("Adiós desde un archivo");

Lo que importa son las últimas líneas: con -, lo que se quita; con +, lo que se pone.

Deshacer lo que no has guardado

Terminal
git restore hola.js

El archivo vuelve a como estaba en el último commit.

Ojo: lo que no estaba en un commit se pierde, y esto no se deshace.

Recuperar una versión antigua

Con el identificador de un commit, trae el archivo tal como estaba entonces:

Terminal
git restore --source=3f2a1c9 hola.js

El archivo cambia en tu carpeta. Si quieres quedarte con esa versión, haz un commit.

Pruébalo

Ejercicio

Borra todo el contenido de tabla.js y guarda. Mira el cambio con git diff y recupera el archivo.

Ver la solución
Terminal
git diff
git restore tabla.js
git status

git diff enseña todas las líneas con -. Después de git restore, git status vuelve a decir nothing to commit.

En resumen

  • git log --oneline enseña el historial; cada commit tiene un identificador.
  • git diff enseña lo cambiado: - sale, + entra.
  • git restore archivo descarta los cambios sin guardar, para siempre.
  • git restore --source=id archivo trae una versión antigua.