Deshacer en Git
Las formas de volver atrás con Git, de la más suave a la más peligrosa. Cuál usar depende de hasta dónde había llegado el cambio.
✦Apagada: responde bien la pregunta del final para encenderla
También lo verás como: git restore · git reset · git clean · deshacer cambios · revertir · git revert · volver atrás
Analogía
Corregir un escrito: tachar a lápiz (se borra sin rastro), arrancar la hoja, o publicar una fe de erratas cuando ya está impreso.
Según dónde esté el cambio
| El cambio está… | Para deshacerlo | Riesgo |
|---|---|---|
| modificado, sin preparar | git restore archivo (o git restore . para todos) |
pierdes esos cambios: es lo que quieres |
preparado (git add) |
git restore --staged archivo lo saca de la preparación, sin tocar el archivo |
ninguno |
| en un archivo nuevo (untracked) | borrarlo a mano, o git clean -n (enseña qué borraría) y luego git clean -fd |
no va a la papelera |
| ya en un commit | git revert <hash>: crea un commit nuevo que lo contrarresta |
ninguno: el historial se conserva |
Los que se leen dos veces
git reset --hard: descarta todo lo no confirmado, sin preguntar.git clean -fd: borra los archivos que Git no conoce, sin papelera.git push --force: sobrescribe el historial de GitHub.
No están prohibidos: están reservados para cuando sepas exactamente qué van a borrar. Si los propone la IA como "solución rápida", para y pregunta.
La idea que lo ordena todo
git restore deshace cambios en archivos que Git ya conocía. No toca los archivos nuevos. Por eso, tras un cambio de la IA que no te gusta, el gesto completo es:
git status ← ¿qué tocó? ¿creó archivos?
git restore . ← deshace los modificados
(borrar a mano los nuevos que aparezcan como untracked)
Y nada de esto funciona si no había un commit previo al que volver.
Claude modificó dos archivos y creó uno nuevo. No te gusta nada. Haces git restore . ¿Qué queda?
Ver también
git status · commit · diff · Git