Menu
Coddy logo textTech

Git Reset --hard

Ultimo aggiornamento

git reset --hard sposta il tuo branch su un commit di destinazione e costringe sia l'area di staging sia la directory di lavoro a corrispondergli esattamente, scartando lungo la strada ogni modifica non committata. È la forma più distruttiva di git reset, quindi assicurati di non aver bisogno del lavoro in corso prima di eseguirlo.

Hai eliminato un commit per errore con un reset? Di solito un hard reset si può recuperare con git reflog. Prova questi comandi in sicurezza nel terminal playground: una vera shell nel tuo browser.

git reset --hard riporta indietro HEAD e scarta tutto ciò che viene dopo, staging area e working tree compresi.

Sintassi

ComandoCosa fa
git reset --hardScarta tutte le modifiche non committate (resta su HEAD)
git reset --hard HEAD~1Elimina l'ultimo commit e le sue modifiche
git reset --hard <hash>Riporta forzatamente il branch a un commit specifico
git reset --hard origin/mainFa coincidere esattamente il branch locale con il remote

Recuperare un hard reset

Il lavoro committato che hai eliminato con un reset di solito si può ancora recuperare.

PassoComandoRisultato
1git reflogElenca dove è stato HEAD, con gli hash
2git reset --hard <hash>Torna al commit precedente al reset

Domande frequenti su git reset --hard

Cosa fa esattamente git reset --hard?
Sposta il branch corrente sul commit di destinazione e sovrascrive sia l'area di staging sia la directory di lavoro perché gli corrispondano. Qualsiasi modifica non committata, in staging o no, viene scartata. Rispetto a --soft (che mantiene le modifiche in staging) e --mixed (che le mantiene fuori dallo staging), --hard è l'unica modalità che butta via le modifiche.
Come scarto tutte le mie modifiche locali?
Esegui git reset --hard senza indicare un commit per riportare la directory di lavoro all'ultimo commit, cancellando le modifiche non committate. Per eliminare anche i file non tracciati, che il reset non tocca, esegui dopo git clean -fd.
Come faccio a far coincidere il mio branch con il remote?
Esegui git fetch e poi git reset --hard origin/main (con il nome del tuo branch). Così costringi il branch locale a coincidere esattamente con il remote, scartando i commit e le modifiche locali che se ne discostano: utile quando il branch locale è finito male e vuoi solo la versione del remote.
Posso annullare un git reset --hard?
Per il lavoro committato di solito sì: esegui git reflog per trovare il commit a cui puntava il branch prima del reset, poi git reset --hard <hash> per tornarci. Le modifiche mai committate (presenti solo nella directory di lavoro) non si possono recuperare, quindi usa --hard con attenzione.
Posso esercitarmi online?
Sì. Apri il terminal playground per eseguire git reset --hard in una vera shell nel tuo browser, senza installare nulla. Il corso interattivo gratuito di Git di Coddy spiega anche come fare il reset e annullare le modifiche passo dopo passo.
Illustrazione dei linguaggi di programmazione di Coddy

Impara Git con Coddy

INIZIA