I tre alberi
Git traccia tre "alberi": il commit HEAD, l'index (area di staging) e il working tree.
--soft: muove solo HEAD
git reset --soft HEAD~1
git commit -m "Better message"
--mixed: resetta anche l'index (default)
git reset HEAD~1
--hard: resetta tutto
git reset --hard HEAD~1
Una tabella decisionale
- Vuoi rifare l'ultimo messaggio?
--soft HEAD~1poi commit di nuovo. - Vuoi de-stagiare tutto?
--mixed. - Vuoi buttare via le modifiche locali?
--hard origin/main.
Resettare un singolo file
git reset HEAD path/to/file
git checkout -- path/to/file
git restore --staged path/to/file
git restore path/to/file
Reset versus revert
reset riscrive la storia. revert crea un nuovo commit che annulla un commit precedente.
Recuperare da un --hard cattivo
git reflog
git reset --hard HEAD@{1}