Neste tutorial, vamos simular uma situação em que esquecemos de mudar de branch e fizemos commit das alterações no branch errado (main) em vez do branch correto (frontend). Vamos usar três arquivos: app.py, index.html e style.css.
O arquivo app.py pertencerá ao branch “main”, e os arquivos index.html e style.css deveriam pertencer ao branch “frontend”.
Vamos usar o comando “git reset <hash_id> –mixed” para desfazer o commit no branch errado e retomar a partir do branch correto.
Passo 1: Criar um diretório e inicializar o repositório git local
1 2 3 |
mkdir git-reset-tutorial cd git-reset-tutorial git init |
Crie o arquivo “app.py” e adicione algum conteúdo a ele.
1 |
echo "Criacao arquivo app.py branch main" >> app.py |
Faça o primeiro commit na branch “main”:
1 2 |
git add app.py git commit -m "Commit inicial: arquivo app.py" |
Passo 2: Criação do branch “frontend” e alterações acidentais no branch “main”
Crie o branch “frontend” a partir da branch “main”:
1 |
git branch frontend |
Aqui vamos simular que você esqueceu de fazer a troca/switch para o branch frontend. É uma situação que pode ocorrer, por exemplo, quando alguém te chama para uma reunião e você estava no meio da tarefa.
Crie os arquivos “index.html” e “style.css” e adicione algum conteúdo inicial a cada um deles.
1 2 |
echo "Arquivo index.html criado" >> index.html echo "Arquivo style.css criado" >> style.css |
Faça o commit desses arquivos. Lembre-se que você esqueceu de trocar de branch e por isso esse commit ficou no branch main.
1 2 |
git add index.html style.css git commit -m "Commit era pra ser no branch frontend: arquivos index.html e style.css" |
Você resolve executar o comando para verificar em que branch está.
1 |
git branch |
Agora você percebeu que estava no branch main. Portanto você precisa desfazer esse commit para fazer as alterações no branch correto.
Passo 3: Desfazendo o commit acidental no branch “main”
Identifique o commit que você quer desfazer:
1 |
git log --all --graph --decorate --oneline --simplify-by-decoration |
Agora execute o reset usando o hash-id do commit que deve ser desfeito.
1 |
git reset <hash-id> |
Verifique que o commit foi desfeito:
1 |
git log --all --graph --decorate --oneline --simplify-by-decoration |
Passo 4: Incorpore as demais alterações nos arquivos agora atuando no branch correto.
1 2 3 4 5 |
git checkout frontend echo "Alterações adicionais branch frontend no arquivo index.html" >> index.html echo "Alterações adicionais branch frontend no arquivo style.css" >> style.css git add index.html style.css git commit -m "Commit com novas alteracoes no branch frontend: alterações nos arquivos index.html e style.css" |
Conclusão
Agora você entendeu como usar o comando “git reset <hash_id> –mixed” para desfazer um commit acidental no branch errado e retomar as alterações corretamente no branch “frontend”. Esse comando permite desfazer commits e mover a branch para um commit específico, mantendo as alterações nos arquivos no working directory, mas removendo-as da staging area. Lembre-se de ter cuidado ao usar o “git reset”, especialmente com a opção –hard, pois as alterações não commitadas podem ser perdidas permanentemente. Sempre faça um backup ou crie um novo branch antes de executar comandos que possam alterar o histórico do repositório.