Git & GitHub – DÍA 2

Control de cambios: git diff, staging, log, deshacer cambios, restaurar archivos


1. Objetivo del día

Hoy aprenderás a:

  • ver qué ha cambiado en tus archivos
  • entender el área de staging
  • deshacer cambios antes del commit
  • restaurar archivos borrados o modificados
  • revisar el historial
  • hacer commits limpios y profesionales

Este día evita errores comunes que comete el 90% de principiantes.


2. Flujo de trabajo de Git (ultra esencial)

Cada cambio pasa por 3 estados:

  1. Working directory (tu carpeta real con tus archivos)
  2. Staging (área intermedia donde eliges qué quieres guardar)
  3. Repository / commits (historial permanente)

Git solo guarda en la historia lo que está en staging, NO todo el directorio.

Gráficamente:

[ Working Directory ] → git add → [ Staging Area ] → git commit → [ Repository ]

3. Ver el estado del repositorio

Tu mejor amigo:

git status

4. Ver diferencias: git diff

Modificar un archivo:

echo "nueva linea" >> archivo.txt

Ver qué ha cambiado antes de añadir al staging:

git diff

Esto muestra:

  • líneas añadidas → verde
  • líneas borradas → rojo

5. Añadir un archivo al staging

git add archivo.txt

Ahora git diff ya no muestra el cambio (porque está en staging).

Para ver lo que hay en staging:

git diff --staged

6. Commitear (guardar versión)

git commit -m "Añado nueva línea al archivo"

7. Ver historial de cambios

Historial completo:

git log

Versión simple:

git log --oneline

Ver cambios de un commit:

git show <ID_COMMIT>

Ejemplo:

git show a3f9c2b

8. Deshacer cosas (muy importante)

8.1. Deshacer cambios sin haber hecho git add

Si modificaste el archivo y luego te arrepientes:

git restore archivo.txt

Esto lo devuelve a como estaba en tu último commit.


8.2. Deshacer cambios que ya están en el staging

Si hiciste:

git add archivo.txt

y quieres quitarlo:

git restore --staged archivo.txt

8.3. Deshacer todo lo no guardado en el repo

⚠ Atención, esto borra cambios sin guardar:

git restore .

9. Recuperar archivos borrados (¡Git es mágico!)

Si borraste un archivo accidentalmente:

rm archivo.txt
git restore archivo.txt

¡Git lo revive si estaba en un commit anterior!


10. Deshacer el último commit (sin perder el trabajo)

Si hiciste un commit pero quieres rehacerlo:

git reset --soft HEAD~1

Esto devuelve los cambios al staging, no los borra.


11. Deshacer commit y staging, pero conservar archivos:

git reset --mixed HEAD~1

12. Deshacer commit Y los cambios (volver atrás)

⚠ Usa esto solo si sabes lo que haces:

git reset --hard HEAD~1

Esto elimina cambios.


13. Práctica guiada (aprox 20 minutos)

1️⃣ Crear archivo:

echo "Hola" > test.txt
git add test.txt
git commit -m "Creo test.txt"

2️⃣ Añadir nueva línea:

echo "Linea nueva" >> test.txt
git diff

3️⃣ Añadir al staging:

git add test.txt
git diff --staged

4️⃣ Quitar del staging:

git restore --staged test.txt

5️⃣ Deshacer cambios:

git restore test.txt

6️⃣ Borrar archivo:

rm test.txt
git restore test.txt

14. Checklist del Día 2

  • Sabes usar git diff y git diff --staged
  • Usas staging de forma correcta
  • Commites solo lo que quieres
  • Restauras archivos modificados
  • Puedes recuperar archivos borrados
  • Sabes ver el historial
  • Puedes deshacer el último commit con seguridad
  • Entiendes los 3 estados de Git

Si está todo marcado → Día 2 completado.


15. Ejercicio sugerido

Crea un repositorio y práctica:

  • crear archivo A y B
  • modificar varios
  • añadir solo uno a staging
  • hacer commit
  • recuperar archivos borrados
  • usar git diff, git restore, git log, git show

Al terminar este ejercicio, sabrás deshacer casi cualquier error típico.


16. Día 2 completado

Ya dominas lo más importante de Git en local.
Mañana llega el día donde tu trabajo empieza a viajar a la nube:

👉 Día 3 – GitHub: crear repos remotos, enlazar local → remoto, push, pull, claves SSH o token.

Este día es FIESTA porque ya podrás subir tus scripts de verdad.