git reset
git
Uso
git reset [--soft|--mixed|--hard] <commit> | git reset <path>Mueve el puntero de la rama a otro commit: --soft deja todo preparado, --mixed (por defecto) además vacía el área de preparación pero conserva tus cambios en los archivos, y --hard también los destruye sin recuperación.
Opciones habituales
| Opción | Significado |
|---|---|
| --soft | move the branch only; index and files keep everything, so the change stays staged |
| --mixed | default: also clear the staging area, leaving edits in your files |
| --hard | also overwrite your files; uncommitted work is destroyed |
| <path> | no commit given: unstage that path |
| --keep | move but refuse if it would overwrite a local change |
| --merge | like --hard but keeps changes that do not collide |
Ejemplos
git reset --soft HEAD~1undoes the last commit and leaves everything staged
git reset HEAD~1undoes the last commit; the changes sit in your files, unstaged
git reset src/app.tsunstages one file without changing it
git reset --hard origin/mainthrows away local commits AND uncommitted edits
Lo confuso es que deshacer tiene varias formas: mover a dónde apunta una rama no es lo mismo que añadir un commit que la revierte.
Cómo leerlo
- Los corchetes [ ] marcan una parte que puedes omitir.
- Los puntos suspensivos … indican que puedes poner varios.
- Las opciones distinguen mayúsculas: en algunos comandos -r y -R no hacen lo mismo.
Preguntas
Q. ¿Qué hace git reset?
Mueve el puntero de la rama a otro commit: --soft deja todo preparado, --mixed (por defecto) además vacía el área de preparación pero conserva tus cambios en los archivos, y --hard también los destruye sin recuperación.
Q. ¿Cómo se escribe?
git reset [--soft|--mixed|--hard] <commit> | git reset <path> — los corchetes marcan lo que puedes omitir.
Q. ¿Cuántas opciones vale la pena saber?
Aquí van 6; la lista completa está en man git. Este comando está en git.
Comandos relacionados
página man: man git-reset