Git Reset - Ejercicio Práctico

1 min

Tabla de contenidos

  1. Preparación del ejercicio
  2. Ejercicio 1: reset soft
  3. Ejercicio 2: reset mixed
  4. Ejercicio 3: reset hard
  5. Verificación

1. Preparación del ejercicio

bash
mkdir exercice-reset && cd exercice-reset
git init

# Crear varios commits para probar
echo "print('v1')" > app.py && git add . && git commit -m "Version 1"
echo "print('v2')" > app.py && git add . && git commit -m "Version 2"
echo "print('v3')" > app.py && git add . && git commit -m "Version 3"
echo "print('v4')" > app.py && git add . && git commit -m "Version 4"

git log --oneline    # Anotar los hashes

Volver a la tabla de contenidos

2. Ejercicio 1: reset soft

Objetivo: volver 2 commits atrás y conservar los cambios en staging.

bash
git reset --soft HEAD~2

# Comprobaciones
git status           # ¿Cambios en el área de staging?
cat app.py          # ¿Qué contenido?
git log --oneline   # ¿Cuántos commits?

Resultado esperado:

  • Archivo: contiene v4
  • Status: modificaciones preparadas para commit
  • Log: 2 commits (v1, v2)

Volver a la tabla de contenidos

3. Ejercicio 2: reset mixed

Puesta a cero y luego prueba mixed:

bash
git commit -m "Re-commit v4"    # Volver a poner v4
git reset --mixed HEAD~1        # Volver 1 commit (modo por defecto)

# Comprobaciones
git status           # ¿Cambios no preparados?
cat app.py          # ¿Qué contenido?
git log --oneline   # ¿Cuántos commits?

Resultado esperado:

  • Archivo: contiene v4
  • Status: modificaciones no preparadas
  • Log: 3 commits (v1, v2, v3)

Volver a la tabla de contenidos

4. Ejercicio 3: reset hard

ATENCIÓN: reset hard = destructivo.

bash
git add .                    # Preparar los cambios
git commit -m "Re-commit v4" # Volver a poner v4
git reset --hard HEAD~2      # Borrar TODO, volver 2 commits

# Comprobaciones
git status           # ¿Working directory limpio?
cat app.py          # ¿Qué contenido?
git log --oneline   # ¿Cuántos commits?

Resultado esperado:

  • Archivo: contiene v2
  • Status: nothing to commit
  • Log: 2 commits (v1, v2)

Volver a la tabla de contenidos

5. Verificación

Resumen de los 3 modos:

ModoCommitsStagingWorking directory
--softRetrocedeConservaConserva
--mixedRetrocedeEliminaConserva
--hardRetrocedeEliminaElimina

¿Has entendido los 3 modos? Perfecto. Reset ya no tiene secretos.

Volver a la tabla de contenidos