O pôster original declara:
A melhor resposta que alguém poderia me dar era usar git revert
X vezes até atingir o commit desejado.
Então, digamos que eu queira reverter para um commit com 20 commit antigo, eu teria que executá-lo 20 vezes.
Existe uma maneira mais fácil de fazer isso?
Não consigo usar a redefinição porque este repositório é público.
Não é necessário usar git revert
X vezes. git revert
pode aceitar um intervalo de confirmação como argumento, portanto, você só precisa usá-lo uma vez para reverter um intervalo de confirmações. Por exemplo, se você deseja reverter as últimas 20 confirmações:
git revert --no-edit HEAD~20..
O comprometer gama HEAD~20..
é curto para HEAD~20..HEAD
, e significa "começar a partir da 20 ª pai da cabeça submeter, e reverter todos os commits depois até a cabeça".
Isso reverterá os últimos 20 confirmados, assumindo que nenhum deles seja confirmado por mesclagem. Se houver confirmações de mesclagem, não será possível revertê-las todas em um comando, será necessário revertê-las individualmente com
git revert -m 1 <merge-commit>
Observe também que eu testei usando um intervalo com o git revert
uso da versão 1.9.0 do git. Se você estiver usando uma versão mais antiga do git, usar um intervalo com git revert
pode ou não funcionar.
Nesse caso, git revert
é preferível a git checkout
.
Observe que, diferentemente da resposta que diz para usargit checkout
, git revert
na verdade, os arquivos adicionados em qualquer consolidação que você está revertendo serão removidos , o que torna a maneira correta de reverter uma série de revisões.
Documentação