Il poster originale afferma:
La migliore risposta che qualcuno potrebbe darmi era usare git revertX 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 revertX volte. git revertpuò 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..HEADe 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 revertusando git versione 1.9.0. Se stai usando una versione precedente di git, usare un intervallo con git revertpuò 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