Git

Git Como Reverter o Último Commit?

Git Como Reverter o Último Commit?
Git é uma ferramenta eficaz que mantém o controle de seu código. E um dos grandes recursos da ferramenta é que você pode facilmente verificar seu histórico e reverter se cometeu um erro. Vamos criar uma situação onde você pode reverter o último commit e ver como o comando Git revert funciona.

Vamos começar adicionando alguns arquivos. No último commit, vamos adicionar e deletar arquivos para criar uma situação complicada. Então, vamos voltar ao estado anterior ao caos.

Você pode criar uma pasta chamada / test e executar os seguintes comandos para inicializar o Git e criar a situação descrita acima (estamos fazendo commits separados intencionalmente para criar um histórico):

$ git init
Repositório Git vazio inicializado em / Users / zakh_eecs / _work / LearnGIT / git_revert / test /.git /
$ echo x> arquivo_1.TXT
$ git add -A
$ git commit -m "Adicionando arquivo_1.TXT"
[master (root-commit) 08caf5d] Adicionando arquivo_1.TXT
1 arquivo alterado, 1 inserção (+)
modo de criação 100644 arquivo_1.TXT
$ echo y> arquivo_2.TXT
$ git add -A
$ git commit -m "Adicionando arquivo_2.TXT"
[master ba18a2f] Adicionando arquivo_2.TXT
1 arquivo alterado, 1 inserção (+)
modo de criação 100644 arquivo_2.TXT
$ echo z> file_3.TXT
$ git add -A
$ git commit -m "Adicionando file_3.TXT"
[master 97f09ad] Adicionando file_3.TXT
1 arquivo alterado, 1 inserção (+)
modo de criação 100644 arquivo_3.TXT
$ echo u> file_4.TXT
$ git add -A
$ git commit -m "Adicionando file_4.TXT"
[master 9caf084] Adicionando arquivo_4.TXT
1 arquivo alterado, 1 inserção (+)
modo de criação 100644 arquivo_4.TXT
$ echo v> file_5.TXT
$ git add -A
$ git commit -m "Adicionando file_5.TXT"
[master 3f228b2] Adicionando arquivo_5.TXT
1 arquivo alterado, 1 inserção (+)
modo de criação 100644 arquivo_5.TXT

Se verificarmos nossa pasta, devemos ver a seguinte situação:

$ ls -1
arquivo_1.TXT
arquivo_2.TXT
file_3.TXT
file_4.TXT
file_5.TXT

Se verificarmos o histórico, devemos ter os seguintes arquivos:

$ git log --oneline
3f228b2 Adicionando arquivo_5.TXT
9caf084 Adicionando arquivo_4.TXT
97f09ad Adicionando arquivo_3.TXT
ba18a2f Adicionando arquivo_2.TXT
08caf5d Adicionando arquivo_1.TXT

Agora vamos criar um pouco de confusão, vamos deletar alguns arquivos e adicionar um arquivo ruim.

$ rm arquivo_2.TXT
$ rm file_4.TXT
$ echo w> my_bad_file.TXT
$ git add -A
$ git commit -m "Arquivos adicionados e excluídos sem pensar nas consequências"
[master 879fbf8] Arquivos adicionados e excluídos sem pensar nas consequências
3 arquivos alterados, 1 inserção (+), 2 exclusões (-)
modo de exclusão 100644 arquivo_2.TXT
modo de exclusão 100644 arquivo_4.TXT
modo de criação 100644 my_bad_file.TXT

Agora, esta é a condição de nossa pasta:

$ ls -1
arquivo_1.TXT
file_3.TXT
file_5.TXT
my_bad_file.TXT

E esta é a condição da nossa história:

$ git log --oneline
879fbf8 Adicionados e excluídos arquivos sem pensar nas consequências
3f228b2 Adicionando arquivo_5.TXT
9caf084 Adicionando arquivo_4.TXT
97f09ad Adicionando arquivo_3.TXT
ba18a2f Adicionando arquivo_2.TXT
08caf5d Adicionando arquivo_1.TXT

Percebemos que não queremos o último commit 879fbf8. Portanto, usamos o seguinte comando revert:

$ git revert 879fbf8

Isso abrirá uma janela de texto para editar o comentário automático:

Reverter "Arquivos adicionados e excluídos sem pensar nas consequências"
 
Isso reverte o commit 879fbf849c4bd6fb9a377604d6355c76b92a832c.
 
# Por favor, insira a mensagem de confirmação para suas alterações. Linhas começando
# com '#' será ignorado, e uma mensagem vazia aborta o commit.
# No branch master
# Mudanças a serem confirmadas:
# Novo arquivo: arquivo_2.TXT
# Novo arquivo: file_4.TXT
# Excluído: my_bad_file.TXT
#

Você pode modificar o comentário. Vamos mantê-lo como está. Assim que você salvar a janela de comentário, a tarefa de reversão ocorrerá:

$ git revert 879fbf8
[master 6e80f0e] Reverter "Arquivos adicionados e excluídos sem pensar nas consequências"
3 arquivos alterados, 2 inserções (+), 1 exclusão (-)
modo de criação 100644 arquivo_2.TXT
modo de criação 100644 arquivo_4.TXT
modo de exclusão 100644 my_bad_file.TXT

Vamos dar uma olhada em nossa pasta agora:

$ ls -1
arquivo_1.TXT
arquivo_2.TXT
file_3.TXT
file_4.TXT
file_5.TXT

Nossos arquivos estão de volta em sequência como antes. Todas as adições e exclusões foram revertidas. Vamos verificar o log:

$ git log --oneline
 
6e80f0e Reverter "Arquivos adicionados e excluídos sem pensar nas consequências"
879fbf8 Adicionados e excluídos arquivos sem pensar nas consequências
3f228b2 Adicionando arquivo_5.TXT
9caf084 Adicionando arquivo_4.TXT
97f09ad Adicionando arquivo_3.TXT
ba18a2f Adicionando arquivo_2.TXT
08caf5d Adicionando arquivo_1.TXT

Há um novo commit 6e80f0e. Quaisquer mudanças que fizeram parte de 879fbf8 foi desfeito e então comprometido em 6e80f0e.

Aviso: O comando de reset do Git permite desfazer commits também. Mas no caso de reinicialização (especialmente a reinicialização a frio), ele teria excluído o 879fbf8 cometer como se nunca tivesse acontecido e não teria havido 6e80f0e comprometer-se. Com um comando de reversão, todos podem ver as mudanças que ocorreram. No caso de reinicialização, nenhum traço é deixado. Portanto, é uma má ideia usar o comando reset em um repositório público porque pode causar confusão em massa. A regra de ouro é - não use redefinir em repositórios públicos, use reverter, que é mais seguro.

Em conclusão:

O comando de reversão do Git é uma maneira rápida e conveniente de corrigir seus erros. É um comando que você deve lembrar se trabalha regularmente com Git.

Um estudo mais aprofundado:

Os 10 melhores jogos para jogar no Ubuntu
A plataforma Windows tem sido uma das plataformas dominantes para jogos devido à grande porcentagem de jogos que estão sendo desenvolvidos hoje para o...
5 melhores jogos de arcade para Linux
Hoje em dia, os computadores são máquinas sérias usadas para jogos. Se você não pode obter a nova pontuação máxima, você saberá o que quero dizer. Nes...
Batalha por Wesnoth 1.13.6 Desenvolvimento lançado
Batalha por Wesnoth 1.13.6 lançado no mês passado, é o sexto lançamento de desenvolvimento no 1.13.série x e oferece uma série de melhorias, principal...