Da Anonimo (non verificato) , 29 Aprile 2026

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~1 poi 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}