2013-01-09 16 views
5

Ho apportato alcune modifiche al mio ramo principale che non ritengo più opportuno. Per amor di argomenti, ho un hash di commit chiamato 791fda4e1ac0e1a393e01340bf0fba3f333a73ff che mi piacerebbe creare il mio HEAD ora, perché è quando tutto era stabile nel repository. Ho cercato di fare quanto segue:Git: sposta HEAD di nuovo a un commit precedente

git reset 791fda4e1ac 
git reset --soft [email protected]{1} 
git commit -m "Revert to 791fda4e1ac" 
git reset --hard 

Eppure, quando faccio una git push origin, vengo respinto, in quanto origine pensa che sia una spinta non fastforward:

! [rejected]  master -> master (non-fast-forward) 

Qual è il modo giusto di ripristinare il mio HEAD indietro per commettere l'hash 791fda4e1ac e ottenere il server di origine anche lì?

risposta

10

Viene rifiutato perché è è non-fast-forward - ignora la cronologia che altri potrebbero aver creato.

Utilizzare git revert per creare un nuovo commit che annulla l'effetto di quelli esistenti.

Oppure, se sei sicuro che nessun altro stia utilizzando il tuo repository e non ti importa di quei commit in futuro, vai avanti e git push -f per ignorare l'avviso.

+1

Quale sarebbe il comando 'git revert' in questo caso? – drevicko

+1

@drevicko Vedi http://stackoverflow.com/questions/1463340/revert-multiple-git-commits per varie possibilità. Mi piace il http://stackoverflow.com/questions/1463340/revert-multiple-git-commits#comment19940208_11743042 migliore. – CletusW

2

È necessario eseguire una spinta forzata (git push -f origin).

Problemi correlati