3
respostas

Dúvida sobre o reset

Olá!

Gostaria de tirar a seguinte dúvida, em um exemplo onde meu código já tem 5 commits, caso eu use esse comando para voltar ao estado original do commit 2, ele irá apagar TODOS os commits acima dele (3, 4 e 5) permanentemente?

Se sim, esse comando é ideal para retirar apenas o último commit realizado no código? Confesso que fiquei um pouco confuso

3 respostas

Olá, Lucas!

Entendo a sua confusão, o comando git reset --hard pode parecer um pouco complexo no início. Vamos esclarecer isso juntos.

Quando você usa o comando git reset --hard seguido do ID do commit, você está voltando o estado do seu código para o momento em que aquele commit foi feito. Ou seja, se você tem 5 commits e usa o comando git reset --hard no commit 2, o seu código vai voltar ao estado que estava no momento do commit 2.

No entanto, os commits 3, 4 e 5 não são apagados permanentemente. Eles ainda existem no repositório, mas não serão visíveis no seu histórico de commits. Se você quiser voltar a esses commits, você precisará do ID deles.

Agora, se você quer retirar apenas o último commit, você pode usar o comando git reset --hard HEAD~1. O HEAD~1 é uma referência ao commit anterior ao último commit. Assim, o seu código voltará ao estado do penúltimo commit, e o último commit será removido do seu histórico.

Lembre-se, use o comando git reset --hard com cuidado, pois ele descarta todas as alterações feitas após o commit especificado, tanto no seu código quanto no histórico de commits.

Espero ter ajudado e bons estudos!

Rodrigo, eu tinha a mesma duvida, mas agora me surgiu outra duvida, como eu faria para obter acesso aos IDs nos commits posteriores conforme o exemplo do amigo, se eles são apagados do histórico de commits?

Oi Rafael!

Na verdade, quando você executa um reset, o Git não apaga o commit do repositório. Ele apenas "esconde" o commit do histórico, mas internamente ainda é possível acessar o commit.

Nesse caso, você pode executar o comando git reflog, que mostra o log do repositório local e nele vai constar os ids do commits, incluindo os ids dos commits que foram resetados.

Bons estudos!