Revertendo Mantendo Alterações com --no-commit
Às vezes, você deseja desfazer as alterações de um commit, mas mantê-las em seu diretório de trabalho para modificá-las. Por exemplo, você pode querer corrigir um erro no commit em vez de descartá-lo completamente. A opção --no-commit (ou -n) é perfeita para isso.
Primeiro, vamos redefinir nosso repositório para o estado anterior ao nosso último revert, para que possamos tentar uma abordagem diferente. Usaremos git reset para isso. Este comando move o ponteiro HEAD e --hard atualiza os arquivos em seu diretório de trabalho para corresponder.
git reset --hard HEAD~1
Este comando remove o commit de "Reversão" que acabamos de fazer. Você pode confirmar isso executando git log --oneline.
Agora, vamos reverter o commit "indesejado" novamente, mas desta vez usando a opção --no-commit. Lembre-se de usar o hash do commit "Add a second, unwanted line".
Por favor, substitua <your-commit-hash> pelo hash real do seu terminal.
git revert --no-commit <your-commit-hash>
Desta vez, nenhum editor aparece. A reversão é preparada, mas não commitada. Verifique o status do seu repositório:
git status
A saída mostrará que story.txt está preparado para commit:
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: story.txt
As alterações do commit revertido agora estão na sua área de staging. Você pode modificá-las agora. Vamos substituir a linha indesejada por uma melhor. Abra story.txt com nano:
nano story.txt
O arquivo ficará como estava após a reversão na Etapa 2. Adicione uma nova linha, melhor, ao final do arquivo:
And they lived happily ever after.
Salve e saia do nano (Ctrl+O, Enter, Ctrl+X).
Agora, adicione suas alterações à área de staging e faça o commit delas com uma nova mensagem descritiva:
git add story.txt
git commit -m "Replace unwanted line with a proper conclusion"
Finalmente, verifique o log e o conteúdo do arquivo para ver o resultado:
git log --oneline
cat story.txt
O log mostra seu novo commit, e story.txt tem o conteúdo corrigido. Você reverteu com sucesso um commit, preservando e modificando suas alterações.