A causa di qualche cattivo cherry-picking, il mio repository Git locale è attualmente cinque commit avanti all'origine, e non in un buono stato. Voglio sbarazzarmi di tutti questi commit e ricominciare da capo.
Ovviamente, cancellare la mia directory di lavoro e ri-clonare lo farebbe, ma scaricare di nuovo tutto da GitHub sembra un'esagerazione e non un buon uso del mio tempo.
Forse git revert
è ciò di cui ho bisogno, ma non voglio finire con 10 commit avanti all'origine (o anche sei), anche se questo riporta il codice allo stato giusto. Voglio solo far finta che l'ultima mezz'ora non sia mai successa.
C'è un semplice comando che farà questo? Sembra un caso d'uso ovvio, ma non sto trovando alcun esempio.
Si noti che questa domanda è specificamente su commits, non su:
Se i vostri commit in eccesso sono visibili solo a voi, potete semplicemente fare
git reset --hard origin/<branch_name>
per tornare indietro a dove si trova l'origine. Questo resetterà lo stato del repository al commit precedente, e scarterà tutte le modifiche locali.
Fare un git revert
fa sì che i nuovi commit rimuovano i vecchi commit in un modo che mantiene sana la storia di tutti.
Prova:
git reset --hard <the sha1 hash>
per resettare la tua testa dove vuoi essere. Usa gitk per vedere a quale commit vuoi essere. Puoi fare il reset anche all'interno di gitk.