El generador de deshacer de git: tres preguntas entran, un comando sale\nPusheado o no, conservar o descartar, compartido o solo — la tabla de decisión detrás de la herramienta, impresa entera, con el reloj de ~90 días del rescate del reflog.\n
■ space · el taller de máquinas · fig 1
Tres preguntas — pusheado o no, conservar o descartar, compartido o solo — un comando exacto de salida, sin cuenta, todo en el navegador.
¿Pusheado y otros hacen pull de la rama? Revert es el único deshacer educado.
¿Commiteado y perdido? Rescate con reflog — los commits sin dueño siguen alcanzables ~90 días.
01EL CLASIFICADOR, EN VIVO
dieciocho estados hacen cola en la tolva — las teclas 1 · 2 · 3 mueven las palancas, el tambor clasifica el ticket
DÓNDE PUSHEADO · ENRUTADO REVERT · VEREDICTO EL ÚNICO DESHACER EDUCADO · RESETS RECHAZADO
la situación es «pusheado a una rama compartida» — el único comando que ofrece es revert, porque las alternativas queman equipos.
18 estados en el panel — tres preguntas, 3 × 3 × 2 — y la mayoría colapsa en el mismo puñado de comandos.
la cancela RECHAZADO está atornillada sobre los tres canales de reset — estructura permanente, no una palanca: los commits pusheados no pueden entrar
02LA TABLA DE DECISIÓN
el cerebro entero del clasificador, impreso — la máquina corre esta búsqueda celda por celda, sin cuenta, nada se sube
| Comando | Historial | Árbol de trabajo | ¿Rama compartida? |
|---|---|---|---|
git reset --soft HEAD~1 | retrocede 1 | cambios conservados, staged | no — reescritura |
git reset HEAD~1 | retrocede 1 | cambios conservados, unstaged | no — reescritura |
git reset --hard HEAD~1 | retrocede 1 | cambios descartados | no — destructivo |
git revert HEAD | añade un commit de deshacer | intocado | sí — el movimiento seguro |
git reflog + git switch -c recovery <sha> | nada se pierde | restaurado desde el reflog | rescate después de cualquier cosa |
La pregunta de la rama compartida es toda la herramienta. Todo lo demás es conveniencia; esa es control de daños.
03LOS COMANDOS QUE IMPRIME
cuatro comandos cubren casi todo el desorden — copia el bloque, comentarios de advertencia incluidos
# committed, not pushed, keep the changes staged
git reset --soft HEAD~1
# committed, not pushed, keep the changes unstaged
git reset HEAD~1
# pushed, others pull this branch — the only polite undo
git revert --no-edit HEAD~1..HEAD
git push
# committed and lost — reflog knows for ~90 days
git reflog
git switch -c recovery <sha-from-the-list>
verificación: git reset --soft HEAD~1 → cambios conservados, staged · git reflog + git switch -c recovery <sha> → nada perdido, restaurado desde el reflog
HEAD~1..HEAD hace revert exactamente de los commits que nombras — vale saberlo aunque la herramienta lo teclee por ti04LO QUE LA MÁQUINA RECHAZA
los rechazos son la función — donde el registro se niega a adivinar, el clasificador imprime el muro
fuente: github.com/mrsaynothing/git-undo — HTML y JavaScript simples, sin paso de build, sin dependencias. Forkéalo, restílalo, arranca mis palabras.
Si te ahorra una sesión de reflog este año, ha pagado la tarde que costó.
fin del generador · nada fetchado · todo local