Por isso ambos atendem a necessidade, conforme o contexto. A rigor, nenhum deles “desfaz” um commit, porque não existe “ctrl+z” para commits. Temos opções disponíveis para o caso de voltar a um commit antigo, ou arrependimento de commit:
- apagar commits em ordem decrescente até um commit escolhido;
- gerar novo commit espelhando o estado do commit escolhido.
Exemplo de cenário muito comum em que o uso do “RESET” é útil:
Está trabalhando em seu repositório local e fez um commit acidental com informações que você não queria registradas, como ter percebido que no último commit foram incluídos dados sensíveis. RESET remove o(s) commit(s) (dependendo da demanda até com uso do --hard) até o ponto anterior ao problema e o resolve.
Exemplo de cenário em que o uso do revert é útil:
Está trabalhando em repositório remoto, ou já foram feitos commits seguintes que se quer manter. REVERT cria um novo commit na ponta refletindo o estado do commit informado.
Por isso é preciso especificar o cenário e definir bem a questão. O Git possui uma vasta documentação e algumas ações podem ser feitas não de uma única maneira… Como a troca de branch.