Artigo original: How to undo changes in Git

Talvez você já saiba que o Git é como um sistema de pontos de gravação. O que você normalmente aprende com o Git, de início, é a salvar suas alterações e a fazer um commit para enviá-las a um repositório remoto. Mas como você desfaz uma alteração e volta a um estado anterior?

É sobre isso que trataremos neste artigo.

Já tratei dos conteúdos deste artigo em um vídeo, caso você prefira aprender assistindo em vez de ler.

Local x Remoto

É mais complicado desfazer algo que já está em um local remoto. É por isso que você talvez deseje manter tudo em seu repositório local até que esteja tudo confirmado.

Quatro cenários comuns

Trataremos dos quatro cenários comuns a seguir

  1. Descartar alterações locais
  2. Ajustar um commit anterior
  3. Voltar para um commit anterior
  4. Reverter um commit que foi enviado para o repositório remoto

Observação: nas imagens abaixo, usei o client de Git chamado Fork for Mac OS. Você pode fazer a mesma coisa em outros clients de Git semelhantes.

Cenário 1: Descartar alterações locais

O primeiro cenário é aquele em que você criou algumas alterações. Você ainda não fez o commit delas e deseja excluir essas alterações.

Imagine que queremos criar um recurso novo. Adicionaremos algum HTML e algum CSS ao projeto:

<!--No index.html-->
<div class="feature"></div>
```

```css
/* No arquivo CSS */
.feature {
  font-size: 2em; 
  /* Outros estilos */
}

Para descartar essas alterações:

  1. Vá para a área de staging
  2. Selecione os arquivos em que você deseja descartar as alterações
  3. Clique com o botão direito nos arquivos
  4. Selecione Discard Changes
0_6JjR02sGP4FgM6zj--1-

Cenário 2: Ajustar o commit anterior

Quando você criou um commit, se esqueceu de algumas alterações e quer adicioná-las na mensagem de commit anterior.

  1. Vá para a área de staging
  2. Faça o staging dos arquivos para o commit
  3. Marque a caixa de seleção Amend
  4. Edite sua mensagem de commit
  5. Faça o commit
0_1wkCc2i9X8JWsBz4

Cenário 3: Voltar para um commit anterior

Você já tem alguns commits em seu repositório local. Você decide que não quer mais esses commits e que deseja “carregar” seus arquivos com um estado anterior.

  1. Vá em Git History
  2. Clique com o botão direito no commit para o qual deseja voltar
  3. Selecione Reset 'nome da branch' to Here
0_IwWQ9XZNRmCaVvb8

Observação: você só pode retornar para um commit que ainda não foi enviado por push para o repositório remoto.

Cenário 4: Reverter um commit que foi enviado para o repositório remoto

Se você tem um commit que já foi enviado por push para a branch remota, você precisará revertê-lo.

Reverter significa desfazer as alterações pela criação de um novo commit. Se você adicionou uma linha, o commit de reversão a removerá. Se você removeu uma linha, o commit de reversão a colocará de volta.

Para reverter, faça o seguinte:

  1. Vá para Git History
  2. Clique com o botão direito no commit que deseja reverter
  3. Selecione Revert Commit
  4. Não se esqueça de marcar Commit the Changes
  5. Clique em Revert
0_29rgArX4rXn3aH6x
0_fUD5rUESrzaMnbXu

Outros cenários

O GitHub tem um arquivo muito útil que mostra como você pode desfazer quase tudo com o Git. Ele será valioso se você encontrar outros cenários além destes. Leia-o aqui (em inglês).

Obrigado pela leitura. O artigo foi útil para você? Se foi, espero que você não se importe de compartilhá-lo. Você poderá estar ajudando outras pessoas.

Este artigo foi publicado originalmente no blog do autor (em inglês).
Assine a newsletter do autor se quiser receber mais artigos que o ajudarão a se tornar um desenvolvedor front-end melhor.