Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git reset [--soft | --mixed | --hard] [<commit>]
git reset [<commit>] [--] <pathspec>...

Descrizione

Il comando git reset sposta il puntatore del branch corrente a un commit specificato, opzionalmente aggiornando l'index e la working tree. Ha tre modalità principali: --soft (sposta solo HEAD), --mixed (default; resetta anche l'index) e --hard (resetta anche la working tree, scartando tutte le modifiche).

Reset è uno dei comandi Git più potenti e più pericolosi. git reset --hard può perdere il lavoro permanentemente — anche se git reflog di solito permette il recupero entro la finestra del reflog. Con argomenti path, reset opera solo sull'index per quei path e non sposta mai HEAD.

Nell'uso quotidiano, git reset si integra con alias e CI.

Capire il modello dati di Git aiuta a prevedere i risultati.

Opzioni comuni

OpzioneDescrizione
--softSposta solo HEAD; index e working tree invariati.
--mixed (default)Sposta HEAD e resetta l'index; working tree invariata.
--hardSposta HEAD, resetta l'index e sovrascrive la working tree.
--keepCome --hard, ma aborta se modifiche locali andrebbero perse.
--mergeResetta l'index e aggiorna i file che differiscono tra HEAD e target, mantenendo i merge locali.
-pSeleziona interattivamente gli hunk da togliere dallo stage.

Esempi

git reset HEAD~1
# Torna indietro di un commit; mantiene le modifiche nella working tree

git reset --soft HEAD~3
# Combina gli ultimi 3 commit in una singola modifica in stage

git reset --hard origin/main
# Scarta TUTTI i commit e modifiche locali (pericoloso)

git reset HEAD config.yml
# Toglie un singolo file dallo stage (sintassi più vecchia per git restore --staged)

Errori comuni

git reset --hard su un branch con commit non pushati li perde. Il reflog può salvarti entro ~90 giorni, ma solo se sai dove guardare. Confondere git reset HEAD file (toglie dallo stage) con git reset --hard (distrugge) è un classico errore da principiante. Git moderno fornisce git restore --staged come alternativa più chiara.

Comandi correlati

git restore, git revert, git reflog, git stash