Ho fatto un git commit
ma non l'ho ancora spinto nel repository.
Quindi quando faccio git status
, ottengo '# Your branch is ahead of 'master' by 1 commit.
Quindi, se voglio rollback il mio commit superiore, posso semplicemente fare:
git reset --hard eb27bf26dd18c5a34e0e82b929e0d74cfcaab316
dato che quando faccio git log
ottengo:
pre> commit eb27bf26dd18c5a34e0e82b929e0d74cfcaab316 Data: Tue Sep 29 11:21:41 2009 -0700
commit db0c078d5286b837532ff5e276dcf91885df2296 Data: Tue Sep 22 10:31:37 2009 -0700
In realtà, quando usi git reset
, dovresti fare riferimento al commit che stai resettando a; quindi vorresti il commit db0c078
, probabilmente.
Una versione più semplice sarebbe git reset --hard HEAD^
, per resettare al commit precedente a quello attuale; in questo modo non devi copiare gli ID dei commit.
Fai attenzione quando fai un git reset --hard
, perché puoi perdere tutte le modifiche non committate che hai. Potresti voler controllare lo stato digit
per assicurarti che la tua copia di lavoro sia pulita, o che tu voglia spazzare via tutte le modifiche che ci sono.
Inoltre, invece di HEAD puoi usare origin/master
come riferimento, come suggerito da @bdonlan nei commenti: git reset --hard origin/master
.
Se non avete spinto le vostre modifiche in remoto
git reset HEAD~1
Controlla se la copia di lavoro è pulita tramite git status
.
Se hai spinto le tue modifiche su remoto
git revert HEAD
Questo comando annullerà/rimuoverà l'ultimo commit/modifica e poi potrai spingere
git reset --hard origin/master
per resettarlo a qualunque fosse l'origine.
Questo è stato postato da @bdonlan nei commenti. Ho aggiunto questa risposta per le persone che non leggono i commenti.