ConceptoBloque 2 · Deshacer
Qué comando usar según dónde está el error
Qué comando usar según dónde está el error
| Dónde está el error | Comando | ¿Reescribe la historia? | Ojo |
|---|---|---|---|
| Archivo modificado sin agregar | git restore archivo |
No | Lo que se tira no se recupera |
| Algo agregado al staging por error | git restore --staged archivo |
No | El cambio sigue en el archivo |
| Último commit, sin push | git commit --amend |
Sí | Cambia el hash |
| Varios commits que quiero juntar, sin push | git reset --soft HEAD~n |
Sí | Los cambios quedan en staging |
| Commits que quiero tirar, sin push | git reset --hard HEAD~n |
Sí | Borra todo lo que no tiene commit |
| “Perdí commits” | git reflog y git reset --hard HEAD@{n} |
Mueve la rama | Solo local y solo commits |
| Commit ya publicado | git revert hash |
No | Agrega un commit contrario |
| Push rechazado después de amend o reset | git push --force-with-lease |
Sí, en GitHub | Solo en ramas que son solo tuyas |
Errores frecuentes
| Qué pasa | Por qué | Qué hacer |
|---|---|---|
La terminal se queda “congelada” tras git revert o un --amend sin -m |
Git abrió VS Code y espera | Cierra la pestaña del mensaje. Si se abrió Vim, escribe :wq y Enter |
fatal: ambiguous argument 'HEAD-1' |
Guion en lugar de tilde | Usa HEAD~1, o el hash del commit |
error: pathspec ... did not match con restore |
El archivo nunca tuvo commit o el nombre está mal | Si es nuevo, bórralo con rm; si no, revisa el nombre con git status |