Header Ads

Como recuperar confirmações revertidas em um repositório Git

Se você acabou de reverter um commit do Git e acidentalmente excluiu um arquivo ou parte do código por causa disso, não se preocupe. Git mantém controle de tudo, e recuperar o arquivo revertido é fácil de fazer tanto a partir da linha de comando quanto da maioria dos clientes GUI Git.

Não entre em pânico

Felizmente, o Git mantém o controle de tudo, até mesmo os commits revertidos. Você ainda não excluiu nada.

Você pode ter se deparado com isso ao tentar “ excluir ” um commit do Git. No entanto, você não pode realmente excluir os commits depois de criá-los. Você só pode redefinir para um commit anterior e ignorar as alterações locais ou reverter as alterações.

Por exemplo, no meu caso com este problema, eu tinha acabado de inicializar meu repositório Git e, acidentalmente, testei tudo sem escrever meu arquivo . gitignore, que confirmou as pastas ./bin/ e outro lixo que eu não queria. Então, sem pensar sobre isso, cliquei em “ reverter ” em meu cliente Git, e assisti com horror enquanto meu diretório inteiro era excluído. Ops.

O problema é que “ revertendo ” um commit não é o mesmo que desestabilizar as mudanças e pode ter efeitos inesperados em seus arquivos locais que só podem ser corrigidos através do Git. Isso parece um problema sério até que você perceba que todos os dados ainda estão armazenados na pasta . git / do seu repositório, para que possam ser recuperados.

Publicidade

O fato de ter um nome estranho não ajuda em nada, e a maneira real de remover um commit indesejado é fazer uma “ reinicialização suave ” de volta ao último commit atrás do HEAD. Então, da próxima vez, se você quiser desfazer um commit (para editar suas alterações e refazer o commit), use o seguinte comando:

 git reset HEAD ~ 1 

Para esclarecimento — esta não é uma “ difícil ” redefinir, que remove todas as alterações locais também.

Corrigindo confirmações revertidas

A correção é muito simples. Sempre que você fizer uma reversão “ git, ” Git faz um novo commit com mudanças opostas ao commit sendo revertido. Se você criou um arquivo, esse arquivo é removido e o commit reflete isso.

A correção é aplicar esse commit de reversão e, em seguida, revertê-lo de volta, o que reverterá as alterações. Isso funcionará mesmo se o commit de reversão não estiver no HEAD do seu repositório; caso contrário, fazer uma reinicialização a frio também funcionaria e libertaria seu repositório de “ reversão ” embaraçosa; e “ desfazer a reversão ” confirma que seus colegas de trabalho vão rir.

Para encontrar o hash para o commit, você pode executar o git log:

Copie este hash e execute git revert:

 git revert 62ff517cc7c358eaf0bffdebbbe1b38dea92ba0f 

Isso deve corrigir o repositório, embora você possa ter que confirmar a reversão manualmente se a confirmação automática falhou.

Publicidade

Na maioria dos clientes GUI Git, o processo é extremamente simples. Basta clicar em “ reverter ” no commit.

Revertendo sem deixar rastros

Se você está no CABEÇALHO de sua árvore de commits e gostaria de fazer isso sem fazer novos commits e ainda não empurrou a mudança, você pode redefinir o seu local ramificar para o commit antigo.

 git reset --hard HEAD ^ 

O motivo pelo qual isso precisa ser uma reinicialização total é porque uma reinicialização suave ainda incluiria as alterações não planejadas da reversão. Você deseja redefinir sem as alterações locais.

Você também pode fazer uma reinicialização suave e descartar as alterações locais manualmente.

Nenhum comentário