Cómo deshacer los cambios de un agente de programación con IA
Deshaz con seguridad las ediciones de un agente de programación con IA: restaura un archivo, descarta lo que dejó sin commit o revierte su commit sin perder tu trabajo.
Para deshacer los cambios de un agente de programación con IA, comprueba qué ha cambiado y usa el comando de Git que corresponda: git restore para los archivos editados, git clean para los archivos nuevos y git revert para un commit. Antes, guarda una copia de seguridad con git stash. El propio /rewind de Claude Code también puede restaurar el código, pero no registra todos los cambios.
Esta guía empieza cuando ya has decidido descartar el trabajo; revisar los cambios de código generados por IA te ayuda a decidirlo. Mono muestra qué ha cambiado, pero no lo deshace, así que allí los comandos son los mismos.
1. Detén el agente y mira qué ha cambiado
Primero, detén el agente. En Mono, el botón de enviar se convierte en un botón de cancelar mientras el agente trabaja. En una terminal abierta en la carpeta del proyecto, ejecuta:
git status
git log --oneline -5El primero muestra los archivos modificados, eliminados, preparados y nuevos. El segundo muestra los commits recientes, incluidos los que haya hecho el agente. Apunta qué cambios son tuyos: los comandos para deshacer no saben quién escribió cada línea.
| Lo que ves | Cómo deshacerlo |
|---|---|
| Archivo modificado o eliminado, sin preparar | git restore <path> |
| Cambio preparado | git restore --staged <path> y después deshaz el archivo |
| Archivo nuevo sin seguimiento | git clean -n <path> y después git clean -f <path> |
| Un commit que no querías | git revert <commit> |
En Mono, «Mostrar cambios» enumera los archivos modificados y nuevos desde el último commit, así que no mostrará un commit que haya hecho el agente.
2. Guarda primero una copia de seguridad
Los comandos restore y clean descartan para siempre el trabajo que no está en ningún commit, así que antes guárdalo todo:
git stash push --include-untracked -m "before undo"
git stash apply --indexEl primero guarda tus archivos modificados y nuevos y deja limpio el árbol de trabajo; el segundo los devuelve a su sitio y conserva lo que estaba preparado. No verás ninguna diferencia, pero git stash list contiene ahora una copia llamada «before undo».
Si deshaces de más, git restore --source "stash@{0}" <path> recupera un archivo editado desde el stash más reciente.
3. Deshaz un archivo o una parte de él
Elige el comando más acotado:
git restore <path>descarta las ediciones sin preparar de ese archivo.git restore --staged <path>saca un cambio del área de preparación, pero conserva la edición en el archivo.git restore -p <path>pregunta por cada parte modificada (hunk) por separado, algo útil cuando el mismo archivo tiene ediciones tuyas y del agente.git clean -n <path>enumera los archivos sin seguimiento que eliminaríagit clean -f <path>. Indica siempre una ruta.
La documentación de git restore explica cada opción.
4. Deshaz todo lo que el agente dejó sin commit
Si ninguno de los cambios es tuyo, descártalos todos desde la raíz del proyecto con git restore --staged --worktree . y, para los archivos nuevos, con git clean -n . y git clean -f .. Si no, trabaja ruta por ruta.
Un ejemplo inventado: le pediste a un agente que cambiara el nombre de la clase CSS .btn-primary a .button-main en un proyecto llamado «tidy-recipes». Antes, había hecho un commit con una actualización del lockfile que nadie había pedido. Esta vez ha cambiado la clase en 3 archivos, ha reformateado 12 archivos sin relación con la tarea y ha creado styles/tokens.css. Mientras tanto, tú editaste README.md a mano y quieres conservar esa edición.
Después de la copia de seguridad, restaura los archivos del agente (aquí, src/ y styles/main.css) y elimina su archivo nuevo:
git restore src/ styles/main.css
git clean -n styles/tokens.css
git clean -f styles/tokens.cssNo uses git restore . en este caso: también descartaría tu edición del README. Si tuvieras ediciones dentro de src/, nombra los archivos del agente uno por uno.
Ahora git status solo muestra README.md, y git diff solo muestra tus líneas. El commit del lockfile sigue ahí.
5. Deshaz un commit que el agente ya ha hecho
git revert registra un commit nuevo que invierte uno anterior. La documentación de git revert indica que necesita un árbol de trabajo limpio, así que antes aparta tu edición del README:
git stash push -m "readme" README.md
git revert <lockfile commit>
git stash popUsa el hash que aparece en git log y añade --no-edit para saltarte el editor del mensaje. git stash pop recupera «readme» y deja «before undo» en la lista. Ahora git status solo muestra README.md, y git log --oneline muestra Revert "Update lockfile" arriba del todo.
Para un commit que ya has subido con push, usa revert en vez de git reset, que reescribe un historial que otras personas pueden tener ya. Si un commit parece perdido después de un reset o un rebase, git reflog muestra los commits en los que has estado recientemente, con sus hashes.
6. Usa los puntos de control del agente, con Git como respaldo
Claude Code guarda un punto de control antes de cada prompt: ejecuta /rewind, o pulsa Esc dos veces con el prompt vacío, para restaurar el código, la conversación o ambos. Su documentación sobre los puntos de control enumera los límites: los cambios hechos con comandos de shell no se registran, las ediciones externas normalmente no se capturan y los puntos de control no sustituyen al control de versiones. La disponibilidad también depende de la app en la que ejecutes el agente.
Por eso, deja que Git sea tu respaldo:
- Haz un commit o crea una rama antes de cada tarea, para que «el último commit» signifique «antes del agente».
- Indica al agente que no haga commits sin preguntar, por ejemplo en tu archivo AGENTS.md.
- Mantén activadas las aprobaciones. El modo YOLO de Mono, que acepta todas las solicitudes del agente, está desactivado por defecto. Consulta qué revisar antes de permitir algo.
En Mono, la tarjeta de un proyecto abre una terminal en la carpeta del proyecto en tu ordenador, también desde el móvil (consulta la guía de programación remota). Mono aún no está disponible, pero puedes apuntarte a la lista de espera.
