ConceptoBloque 2 · Deshacer
Regresar la rama a un commit anterior
Explicación
git reset regresa tu rama a un commit anterior. Los commits más nuevos dejan de formar parte de la rama, como arrancar las últimas hojas de un cuaderno.
HEAD~1significa “un commit atrás”.HEAD~2, “dos commits atrás”, y así.
Lo importante es qué pasa con los cambios que traían esas hojas. Eso lo decide el modo:
| Modo | Qué pasa con los cambios | Para qué sirve |
|---|---|---|
--soft |
Quedan en staging, listos para otro commit | Juntar varios commits en uno |
--mixed (por defecto) |
Quedan en los archivos, sin git add |
Rehacer los commits a tu manera |
--hard |
Se borran, junto con todo lo que no tenía commit | Tirar commits por completo |
Los nombres ayudan: soft es suave y no toca tu trabajo; hard es duro y se lo lleva todo.
Riesgo
--hard es el comando más peligroso del día: no pregunta ni avisa, y lo que no estaba en un commit se pierde para siempre. Antes de usarlo, siempre git status.
Igual que amend, reset reescribe la historia: úsalo solo con commits que estén únicamente en tu computadora.