Git · Sección 7

Deshacer y recuperar sin pánico

Elegir entre restore, amend, revert y reset según el estado del cambio, comprender detached HEAD y recuperar referencias mediante reflog.

3
lecciones
3
ejercicios resueltos
CONTENIDO ORIGINAL

Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.

ANTES DE EMPEZAR

Ubícate antes de avanzar

01 / PUNTO DE PARTIDA

Conviene haber comprendido Commits e historial comprensible.

02 / META OBSERVABLE

Al terminar deberías poder relacionar restore y amend con revert y reset y resolver un caso nuevo.

03 / TIEMPO SUGERIDO

Reserva entre 75 y 120 minutos o divide el laboratorio en dos sesiones.

04 / PREPARA EL LABORATORIO

Instala Git y utiliza Git Bash, PowerShell o una terminal Unix. Mantén un repositorio desechable para probar recuperación y conflictos.

Abrir la guía de herramientas →
Diagnóstico rápido: ¿cómo se relacionan restore y amend y revert y reset? +

No necesitas acertar todavía. Escribe una hipótesis de dos líneas y compárala con tu respuesta al finalizar; si puedes corregirla y justificar el cambio, hubo aprendizaje.

Ruta guiada · 3 lecciones

Aprende el tema paso a paso

Elegirás una estrategia de recuperación según dónde está el cambio y si el historial ya fue compartido.

Al terminar podrás
  • Restore y amend tienen alcances diferentes
  • Revert añade historia; reset mueve una referencia
  • Detached HEAD permite inspeccionar; reflog ayuda a recuperar movimientos locales
01
Corregir antes de compartir

Restore y amend tienen alcances diferentes

git restore archivo reemplaza cambios de trabajo desde el índice; --staged retira del staging conservando el archivo modificado. amend sustituye el último commit y es apropiado para corregir un commit local que aún no depende de trabajo compartido.

01

Primero identifica la copia que quieres conservar.

02

restore --staged no borra la edición del archivo.

03

Amend cambia la identidad del commit.

Comprueba lo aprendido · 01

¿Qué conserva git restore --staged archivo?

Mostrar respuesta +

Conserva el contenido modificado en el directorio de trabajo y lo retira del próximo commit.

02
Deshacer commits

Revert añade historia; reset mueve una referencia

git revert crea un commit que invierte el efecto de otro y mantiene visible lo ocurrido, por eso es apropiado para historia compartida. reset mueve la rama y sus modos deciden qué ocurre con staging y trabajo. El modo hard puede descartar contenido no registrado.

01

Prefiere revert cuando otras personas ya recibieron el commit.

02

Usa reset solo después de dibujar el estado final esperado.

03

No reescribas una rama compartida sin coordinación explícita.

Comprueba lo aprendido · 02

¿Por qué revert suele ser más seguro que reset en main compartida?

Mostrar respuesta +

Porque agrega un nuevo commit sin cambiar la identidad de los commits que otras personas ya descargaron.

03
Rescatar una referencia

Detached HEAD permite inspeccionar; reflog ayuda a recuperar movimientos locales

Al cambiar directamente a un commit, HEAD queda separado de una rama. Puedes inspeccionar o crear una rama desde allí. Reflog conserva movimientos locales recientes de HEAD y ramas, útil cuando una referencia dejó de apuntar a un commit que necesitas.

01

No confirmes trabajo importante sin crear una rama.

02

Reflog es local y tiene retención limitada.

03

Recupera creando una referencia antes de seguir experimentando.

Comprueba lo aprendido · 03

¿Detached HEAD significa que el repositorio está dañado?

Mostrar respuesta +

No. Significa que HEAD apunta directamente a un commit y no a una rama. Es válido para inspección, pero el trabajo nuevo debe anclarse con una rama.

Resumen de la sección

Tu recorrido en tres ideas

  1. Restore y amend tienen alcances diferentes
  2. Revert añade historia; reset mueve una referencia
  3. Detached HEAD permite inspeccionar; reflog ayuda a recuperar movimientos locales
PROFUNDIZACIÓN / LABORATORIO GUIADO

Recupera tres errores sin perder el trabajo correcto

Relaciona zona, alcance, historia compartida y recuperación antes de elegir un comando.

CASO

Preparaste un archivo equivocado, publicaste un commit defectuoso y después una rama local dejó de apuntar a otro commit valioso.

Procedimiento

  1. Dibuja HEAD, staging y trabajo antes de cada recuperación.
  2. Retira del staging, revierte el commit compartido y publica la corrección.
  3. Localiza el commit local mediante reflog y crea una rama de rescate.

Evidencia mínima

  • Status y log antes y después.
  • Commit de revert sin reescritura compartida.
  • Rama nueva que hace alcanzable el trabajo recuperado.
Mostrar razonamiento modelo +

Cada fallo usa una herramienta distinta porque vive en otra zona. Restore --staged conserva la edición; revert añade historia; reflog localiza el hash y una rama lo protege.

Para ir más lejos

¿Cuándo amend sería más claro que crear otro commit?

CIERRE DE LA SECCIÓN

Comprueba que puedes usarlo

Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.

ERROR 01

Usar reset cuando restore o revert tienen un alcance más seguro.

ERROR 02

Seguir trabajando en detached HEAD sin crear una referencia.

DESAFÍO INTEGRADOR

Ahora hazlo sin guía

En un laboratorio, retira un archivo del staging, revierte un commit y rescata otro mediante reflog.

Mostrar pauta de corrección +
Una respuesta sólida:
  • Predice el estado final antes de actuar.
  • No pierde el cambio que debía conservar.
  • Diferencia historia local de historia compartida.