Ir al contenido
Mastering Claude

Inicio / Cuando algo falla

Cuando algo falla9 minApplication

Deshacer y recuperar una modificación

Para deshacer la última acción de Claude Code en la sesión en curso, el menú de puntos de reanudación abierto por /rewind precede ahora a Git, que sigue siendo necesario para todo lo que este sistema no sigue: una modificación hecha por un comando bash, la edición de un subagente en segundo plano, o un archivo enlazado por un enlace simbólico o físico.

Deshacer la última modificación de Claude Code en la sesión en curso ya no pasa, en primer lugar, por Git. El menú de puntos de reanudación, abierto por /rewind o una doble pulsación de Escape cuando la línea de entrada está vacía, propone tres opciones distintas: restaurar el código y la conversación, solo la conversación, o solo el código, hasta un instante anterior de la misma sesión. Pedirle en lenguaje natural a Claude Code que deshaga su última modificación activa este mismo mecanismo. Este camino cuesta menos que un rodeo por Git para una acción todavía reciente: sin commit que buscar, sin rama que recrear, solo un retorno inmediato en la misma sesión.

Lo que el sistema de puntos de reanudación no sigue

La documentación oficial acota ella misma su alcance: este sistema no es un reemplazo del control de versiones, y para un historial permanente o el trabajo en equipo, recomienda seguir usando Git, para los commits, las ramas y el historial a largo plazo. Se añaden tres límites concretos, cada uno correspondiente a un trabajo que Claude Code no hizo él mismo con sus propias herramientas de edición. Las modificaciones hechas por un comando bash, rm, mv o cp, no se siguen: solo las ediciones pasadas por las herramientas de edición de archivos de Claude lo son. Las ediciones hechas por un subagente en segundo plano también escapan a la restauración. Un archivo enlazado por un enlace simbólico o un enlace físico se ignora durante una restauración.

Git sigue siendo la herramienta para lo que los puntos de reanudación ignoran

git restore retira una modificación no confirmada del directorio de trabajo. git reflog encuentra cualquier posición anterior de HEAD, incluido un commit que parece perdido después de un reset mal hecho.

git reflog
# muestra cada posición de HEAD, la más reciente primero
git branch securite <hachage-retrouve>
# recrea una rama desde un estado encontrado, sin tocar la rama en curso

Recrear una rama desde un hash encontrado en el reflog sigue siendo preferible a un git reset --hard: el reset sobrescribe el estado actual, la rama de seguridad lo conserva aparte sin perder nada. Verificar el reflog cuesta un comando, un reset mal dirigido puede costar toda una tarde de trabajo para recuperarlo a mano. Esta misma distinción entre un retroceso y un borrado definitivo se encuentra, aplicada a una conversación entera en lugar de a un archivo, en bucles, contexto contaminado y reinicio.

Figure 1

De la modificación indeseada a la rama de seguridad

01
Modificación indeseada
Una corrección reciente de Claude Code debe deshacerse, en código, en conversación, o en ambos.
02
Puntos de reanudación primero
/rewind o un doble Escape abre el menú y restaura hasta un instante anterior de la misma sesión.
03
Límite alcanzado
Un comando bash, una edición de subagente en segundo plano, o un archivo enlazado escapa a esta restauración.
04
Reflog consultado
git reflog encuentra la posición de HEAD anterior a la modificación, incluso después de un commit aparentemente perdido.
05
Rama de seguridad
Una rama recreada desde ese hash conserva el estado actual aparte, sin sobrescribirlo con un reset destructivo.
La secuencia coloca el menú de puntos de reanudación antes que Git para la última acción de la sesión, y luego cambia a Git para todo lo que ese menú no sigue.
Calíbralo tú mismo

Un desarrollador constata que una modificación aplicada por Claude Code cinco minutos antes rompe un test. Abre el menú de puntos de reanudación con una doble pulsación de Escape y selecciona la opción que restaura solo el código, hasta el instante anterior a esa modificación.

Escriba en una frase lo que esta situación establece, y en una frase lo que no establece.

Lo que hay que recordar
  • El menú de puntos de reanudación, abierto por /rewind o un doble Escape, restaura el código y la conversación, solo la conversación, o solo el código, hasta un instante anterior de la misma sesión.
  • La documentación oficial presenta este sistema como un complemento a Git, no un reemplazo, para el historial permanente y el trabajo en equipo.
  • Las modificaciones hechas por un comando bash como rm, mv o cp, las ediciones de un subagente en segundo plano, y los archivos enlazados por un enlace simbólico o físico escapan todos a una restauración por puntos de reanudación.
  • git restore retira una modificación no confirmada del directorio de trabajo, git reflog encuentra cualquier posición anterior de HEAD, incluido un commit aparentemente perdido.
  • Recrear una rama desde un hash encontrado en el reflog conserva el estado actual aparte, mientras que un git reset --hard lo sobrescribe.
Hazlo ahora

Antes de cualquier git reset --hard en su repositorio, lance git reflog, localice el hash del estado que quiere conservar, y cree una rama de seguridad desde ese hash antes de continuar.

Verificar en la fuente

Cada afirmación datable de esta lección remite aquí al texto público que la respalda. Una fuente que no se abre no prueba nada.