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.
Sintassi
| Comando | Cosa fa |
|---|---|
git reset --hard | Scarta tutte le modifiche non committate (resta su HEAD) |
git reset --hard HEAD~1 | Elimina l'ultimo commit e le sue modifiche |
git reset --hard <hash> | Riporta forzatamente il branch a un commit specifico |
git reset --hard origin/main | Fa 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.
| Passo | Comando | Risultato |
|---|---|---|
| 1 | git reflog | Elenca dove è stato HEAD, con gli hash |
| 2 | git reset --hard <hash> | Torna al commit precedente al reset |
Domande frequenti su git reset --hard
Cosa fa esattamente git reset --hard?
--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?
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?
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?
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?
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.