Desfazendo Alterações Antes do Commit
Durante o desenvolvimento, é comum modificar arquivos e depois perceber que deseja desfazer essas mudanças antes de realizar um commit. O Git oferece diferentes maneiras de lidar com essa situação, dependendo do estado dos arquivos. Vamos aqui focar em dois possíveis cenários:
Desfazer alterações que ainda não foram adicionados à área de staging
Remover arquivos da área de staging
Desfazer Alterações Não Adicionadas à Área de Staging
Se um arquivo foi editado, mas ainda não foi adicionado ao staging com git add, você pode simplesmente descartar as alterações com:
git restore nome-do-arquivo
Isso reverterá o arquivo para o último estado salvo no repositório.
Remover Arquivos da Área de Staging
Se você já adicionou o arquivo ao staging com git add, mas deseja remover as mudanças antes do commit, use:
git reset HEAD nome-do-arquivo
Isso removerá o arquivo do staging, mas manterá as mudanças no diretório de trabalho. O comando apenas "desfaz o git add".
Para descartar completamente as mudanças, você pode utilizar o comando explicado no item anterios:
git restore nome-do-arquivo
Uma nota sobre o git checkout
Se você já tem alguma experiência com o Git, pode estar se perguntando sobre o comando git checkout, que também é utilizado para desfazer mudanças em arquivos. Historicamente, o git checkout desempenhou um papel central no fluxo de trabalho do Git, não só permitindo a restauração de arquivos, mas também sendo usado para troca de branches e até mesmo criação de novos branches.
Com o tempo, à medida que o Git evoluía e novas funcionalidades eram adicionadas, o git checkout passou a acumular muitas responsabilidades. Essa sobrecarga de funções gerou certa confusão, especialmente para iniciantes, pois o mesmo comando era usado para realizar operações bem diferentes, como alternar entre branches e restaurar arquivos de versões anteriores.
Para resolver essa confusão e tornar o processo de alternância de branches mais claro, o comando git switch foi introduzido na versão 2.23 do Git, lançada em agosto de 2019. O objetivo principal foi separar as responsabilidades: o git switch foi criado para simplificar a troca de branches, enquanto a restauração de arquivos foi transferida para o comando git restore. Dessa forma, o git restora foca exclusivamente na restauração de arquivos, oferecendo uma experiência mais intuitiva e menos propensa a erros, especialmente para novas pessoas usuárias.
Se você ainda estiver usando o git checkout para restauração de arquivos, o git restore é a opção mais moderna e recomendada para essa tarefa.
Esta é uma explicação simplificada para fins didáticos. Para explorar todas as possibilidades dos comandos git
restore
e git
reset
, consulte as documentações oficiais:
Last updated
Was this helpful?