13. Desfazendo mudanças locais (revert e reset)

Página 13

13. Desfazendo Mudanças Locais com Git: Revert e Reset

Quando trabalhamos com versionamento de código usando Git, é comum fazer alterações que, por algum motivo, desejamos desfazer. Seja porque cometemos um erro, seja porque queremos voltar a um estado anterior do projeto, o Git oferece ferramentas poderosas para desfazer mudanças locais: o git revert e o git reset.

O Comando git revert

O comando git revert é usado para desfazer as alterações introduzidas por um commit específico, criando um novo commit com o conteúdo revertido. Esta é uma maneira segura de desfazer mudanças, pois não altera o histórico do repositório. Em outras palavras, o git revert é uma forma de "voltar no tempo" sem apagar a história de como você chegou até ali.

git revert [commit_hash]

Para usar o git revert, você precisa especificar o hash do commit que deseja reverter. O Git então criará um novo commit que é o inverso exato do commit especificado. Isso é útil quando você precisa manter o registro de que algo foi desfeito, ou quando está trabalhando em um repositório compartilhado onde apagar o histórico seria problemático para outros colaboradores.

O Comando git reset

O comando git reset, por outro lado, é uma ferramenta mais drástica. Ele é usado para redefinir o estado atual do seu repositório para um commit anterior, descartando as alterações que foram feitas depois desse commit. Existem três principais formas de usar o git reset: --soft, --mixed e --hard.

Reset Soft

git reset --soft [commit_hash]

O --soft mantém todas as suas mudanças atuais no estado de "modificações a serem commitadas" (staged changes). Isso é útil quando você quer redefinir o HEAD do seu repositório a um commit anterior, mas pretende manter as alterações feitas para fazer um novo commit com elas.

Reset Mixed

git reset --mixed [commit_hash]

O --mixed é a opção padrão do git reset. Ele irá desfazer o commit e as mudanças que você fez serão mantidas no seu diretório de trabalho, mas não estarão staged. Isso significa que você terá que adicionar as alterações novamente antes de poder commitá-las.

Reset Hard

git reset --hard [commit_hash]

O --hard é a opção mais radical. Ele irá redefinir o HEAD, o index e o diretório de trabalho para o estado de um commit anterior. Todas as alterações feitas após o commit especificado serão perdidas. Esta opção deve ser usada com cuidado, pois não há como recuperar as mudanças descartadas.

Escolhendo entre Revert e Reset

A escolha entre git revert e git reset depende da situação e do que você deseja alcançar. Se você está trabalhando em um repositório compartilhado e deseja desfazer um commit sem afetar outros colaboradores, o git revert é a escolha apropriada. Se você está trabalhando localmente e fez algo que deseja desfazer completamente, o git reset pode ser o caminho a seguir.

Exemplo Prático

Vamos supor que você tenha feito um commit que, após revisão, você percebeu que não deveria ter sido feito. Para reverter esse commit, você pode usar:

git revert [commit_hash]

O Git irá criar um novo commit que desfaz as mudanças do commit especificado. Se você quiser voltar a um estado anterior do projeto e descartar todos os commits feitos após um certo ponto, você pode usar:

git reset --hard [commit_hash]

Isso irá alterar o estado do seu diretório de trabalho para o estado do commit especificado, descartando todas as mudanças feitas desde então.

Cuidados ao Desfazer Mudanças

É importante ter cuidado ao desfazer mudanças, especialmente ao usar o git reset --hard. Uma vez que as mudanças são descartadas com essa opção, elas não podem ser recuperadas a menos que você tenha feito um backup delas de alguma forma. Sempre verifique duas vezes antes de usar comandos que podem resultar em perda de dados.

Conclusão

O Git é uma ferramenta poderosa para controle de versão, e entender como desfazer mudanças é fundamental para gerenciar seu código de forma eficaz. O git revert e o git reset são comandos valiosos que oferecem diferentes níveis de controle sobre o histórico do seu repositório e o estado do seu projeto. Ao usá-los com cuidado e compreensão, você pode navegar pelo seu histórico de código e gerenciar suas mudanças com confiança.

Now answer the exercise about the content:

Qual das seguintes afirmações sobre os comandos `git revert` e `git reset` é correta?

You are right! Congratulations, now go to the next page

You missed! Try again.

Next page of the Free Ebook:

1414. Branching: o que são branches?

Earn your Certificate for this Course for Free! by downloading the Cursa app and reading the ebook there. Available on Google Play or App Store!

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text