Il poster originale afferma:
La migliore risposta che qualcuno potrebbe darmi era usare git revert
X volte fino a quando non raggiungo il commit desiderato.
Quindi diciamo che voglio tornare a un commit che è vecchio di 20 commit, dovrei eseguirlo 20 volte.
C'è un modo più semplice per farlo?
Non riesco a utilizzare il ripristino perché questo repository è pubblico.
Non è necessario utilizzare git revert
X volte. git revert
può accettare un intervallo di commit come argomento, quindi è necessario utilizzarlo solo una volta per ripristinare un intervallo di commit. Ad esempio, se si desidera ripristinare gli ultimi 20 commit:
git revert --no-edit HEAD~20..
L'intervallo di commit HEAD~20..
è breve HEAD~20..HEAD
e significa "inizia dal 20 ° genitore del commit HEAD e ripristina tutti i commit successivi fino a HEAD".
Ciò ripristinerà gli ultimi 20 commit, supponendo che nessuno di questi sia commit di merge. Se ci sono commit di unione, non puoi ripristinarli tutti in un solo comando, dovrai ripristinarli singolarmente con
git revert -m 1 <merge-commit>
Nota anche che ho provato ad usare un intervallo git revert
usando git versione 1.9.0. Se stai usando una versione precedente di git, usare un intervallo con git revert
può o non può funzionare.
In questo caso, git revert
è preferito sopra git checkout
.
Nota che a differenza di questa risposta che dice di usaregit checkout
, git revert
in realtà rimuoverai tutti i file che sono stati aggiunti in qualsiasi commit che stai ripristinando , il che rende questo il modo corretto di ripristinare una serie di revisioni.
Documentazione