Qual è il significato di git reset --hard origin / master?


224

Ho fatto un git pulle ho ricevuto un errore:

I seguenti file dell'albero di lavoro verrebbero sovrascritti dall'unione ... Sposta o rimuovili prima di poter unire.

Per risolvere questo ho fatto quanto segue:

git fetch
git reset --hard origin/master

Ora, quando lo faccio git pull, dice tutto aggiornato. Voglio sapere cosa succede esattamente quando eseguo questi comandi. So che git fetchrecupera le modifiche dal repository remoto senza unirle nel repository locale.

Qual è il significato di git reset --hard origin/master? Come funziona?

Risposte:


414
git reset --hard origin/master

dice: getta via tutte le mie modifiche organizzate e non messe in scena, dimentica tutto sul mio attuale ramo locale e rendilo esattamente uguale a origin/master.

Probabilmente volevi chiedere questo prima di eseguire il comando. La natura distruttiva viene suggerita usando le stesse parole di "hard reset".


9
Puoi annullare questa mossa usando git reset --hard HEAD@{1}. HEAD@{1}varia da situazione a situazione, quindi ti consigliamo di cercarla git reflog.
Nils Werner,

2
Si noti che il metodo @ NilsWerner per annullare lo spostamento non ripristina le modifiche graduali e non programmate. Quelli sono andati per sempre.
Michael Anderson,

3
I file a fasi possono ancora essere trovati con git fsck --lost-found, ma non saranno allegati al percorso del file originale e potrebbero essere difficili da ordinare.
CB Bailey

1
È spesso utile reimpostare il ramo master locale su origin / master quando sono state (forse accidentalmente) commesse modifiche al proprio master locale anziché a un ramo locale. Crea semplicemente una filiale locale per i tuoi ultimi commit e poi resetta il tuo master locale su origin / master. È quindi possibile unire o riformulare il ramo dal master in base alle esigenze.
Mike Hopper,

2
lol "accennato a" è un ottimo modo per descriverlo, dato che non è affatto ovvio o esplicito
Ben Sandeen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.