14. Desfazendo commits
Metas
- Aprender como desfazer commits no repositório local.
01 Desfazendo commits
Algumas vezes você percebe que os novos commits estão errados e você quer desfazê-los. Existem várias maneiras de resolver esse problema, mas nós usamos a mais segura aqui.
Para desfazer o commit, vamos criar um novo commit desfazendo as modificações não desejadas.
02 Edite o arquivo e faça um commit
Substitua o arquivo hello.html
com o seguinte.
Arquivo: hello.html
<html>
<head>
</head>
<body>
<h1>Hello, World!</h1>
<!-- This is an unwanted but committed change -->
</body>
</html>
Execute
git add hello.html
git commit -m "Oops, we didn't want this commit"
03 Faça um commit com as novas modificações que desfazem as modificações anteriores
Para desfazer o commit, precisamos criar um commit que deleta as modificações feitas pelo commit indesejado.
Execute
git revert HEAD
Vá para o editor, onde você consegue editar a mensagem padrão do commit ou deixá-la como está. Salve e feche o arquivo.
Você verá:
Resultado
$ git revert HEAD
[main 86364a1] Revert "Oops, we didn't want this commit"
Date: Tue Nov 28 05:51:38 2023 -0600
1 file changed, 1 deletion(-)
Já que desfizemos o último commit, nós podemos usar HEAD
como o argumento para desfazê-lo. Nós podemos cancelar qualquer commit no histórico, apontando seu hash.
04 Confira o log
Conferir o log mostra os cancelamentos e commits indesejados no nosso repositório.
Execute
git log
Resultado
$ git log
86364a1 2023-11-28 | Revert "Oops, we didn't want this commit" (HEAD -> main) [Alexander Shvets]
6a44bec 2023-11-28 | Oops, we didn't want this commit [Alexander Shvets]
b7614c1 2023-11-28 | Added HTML header (tag: v1) [Alexander Shvets]
46afaff 2023-11-28 | Added standard HTML page tags (tag: v1-beta) [Alexander Shvets]
78433de 2023-11-28 | Added h1 tag [Alexander Shvets]
5836970 2023-11-28 | Initial commit [Alexander Shvets]
Essa técnica pode ser aplicada para qualquer commit (mas podem surgir conflitos). É seguro usá-la mesmo em branches públicos de repositórios remotos.
05 Próximo
A seguir vamos olhar a técnica que pode ser usada para remover o último commit do histórico do repositório.