Marcio Cunha

Como recuperar arquivos corrompidos no Git direto no terminal

Aprenda a resgatar commits perdidos, reverter alterações indesejadas e restaurar arquivos deletados acidentalmente no Git usando apenas comandos nativos no terminal.

Marcio Cunha•4 min
Também disponível em:EnglishEspañol
Resumo
  • O comando checkout restaura arquivos locais modificados por engano para a última versão salva.
  • O log de referências reflog guarda cada ação executada no repositório local mesmo após exclusões drásticas.
  • A ferramenta reset permite ajustar o ponteiro do histórico para resgatar o código do projeto.
  • A operação de cherry-pick resgata commits isolados de outros galhos de desenvolvimento sem misturar o restante.
  • A rotina de limpeza exige cautela para evitar a perda definitiva de dados não rastreados pelo sistema.

O que acontece quando o Git corrompe arquivos ou perdemos código?

Trabalhar com controle de versão é como ter uma máquina do tempo para o seu código. No entanto, em momentos de pressa, conflitos de mesclagem ou falhas de disco, podemos nos deparar com arquivos modificados incorretamente, apagados por engano ou commits inteiros sumindo do horizonte. Na prática, isso significa que o ecossistema de rastreamento mantém redes de segurança internas que muitas vezes ignoramos. Assim como técnicos utilizam ferramentas de recuperação no sistema de arquivos para resgatar dados perdidos no disco, o Git possui mecanismos próprios e nativos operados diretamente pelo terminal para nos tirar de apuros sem precisar recorrer a backups externos.

Muitos desenvolvedores entram em pânico quando percebem que sobrescreveram horas de trabalho ou executaram um comando destrutivo. A boa notícia é que o Git raramente apaga dados de forma imediata. Ele armazena histórico e referências em uma pasta oculta chamada .git na raiz do seu projeto. Entender a diferença entre a área de trabalho, o índice de preparação e o histórico de commits é o primeiro passo para dominar a arte de desfazer o que deu errado sem danificar a estrutura do software.

Como restaurar arquivos locais modificados ou apagados por engano

Quando você altera um arquivo na sua máquina e percebe que a mudança estragou tudo, o comando de restauração rápida se torna seu melhor amigo. Para descartar modificações locais em um arquivo específico e trazê-lo de volta ao estado exato do último salvamento, usamos o comando restore ou o clássico checkout. Na prática, o Git substitui o arquivo atual pelo que está gravado no último commit realizado no seu galho atual.

Para executar essa restauração de forma segura no terminal, abra a linha de comando na pasta do seu repositório e digite a instrução a seguir:

git restore nome_do_arquivo.txt

Caso você tenha deletado o arquivo completamente usando o comando rm do seu sistema operacional em vez do comando do próprio Git, a mesma instrução serve para trazê-lo de volta à vida. O motor interno do versionador verifica o banco de dados de objetos, localiza a cópia mais recente e a recria no seu diretório de trabalho de forma instantânea.

Como resgatar commits perdidos usando o histórico de referências

O cenário mais aterrorizante acontece quando executamos um reset drástico ou apagamos um galho de desenvolvimento inteiro, fazendo com que commits recentes desapareçam da nossa visão normal. É aqui que entra o segredo mais poderoso do Git: o reflog. O reflog é um registro cronológico de todas as vezes que o ponteiro de referência mudou de lugar no seu repositório local, registrando inclusive os passos que pareciam perdidos para sempre.

Para consultar esse diário de bordo secreto e encontrar o número de identificação do commit antes do desastre, execute o comando abaixo no terminal:

git reflog

O terminal exibirá uma lista com linhas numeradas contendo códigos alfanuméricos e descrições das ações recentes. Ao identificar o momento exato em que o código estava íntegro, você pode criar um novo galho temporário ou restaurar o estado apontando para aquele código específico. Essa é a principal ferramenta de salvamento quando precisamos reverter operações complexas, funcionando de maneira análoga a um processo rigoroso de tratamento de dados estruturados na linha de comando para isolar o que realmente importa.

Como resgatar código isolado com a técnica de cherry-pick

Às vezes, o problema não é a perda de um arquivo inteiro, mas a necessidade de trazer um bloco específico de alterações que foi criado em outro galho ou projeto para o seu ambiente atual, sem precisar misturar todo o histórico alheio. Para isso, o comando cherry-pick atua como um selecionador cirúrgico. Ele pega um commit específico de qualquer lugar da árvore genealógica do repositório e o aplica diretamente onde você está trabalhando.

A sintaxe para aplicar essa operação cirúrgica no terminal é bastante direta, exigindo apenas que você informe a identificação única do commit desejado:

git cherry-pick a1b2c3d4

Essa abordagem evita que você precise refazer manualmente alterações complexas ou recorrer a cópias manuais de arquivos via área de transferência. O Git cuida de aplicar as modificações e verificar se há conflitos pontuais que precisem de validação humana antes de consolidar o processo. Para aprofundar esses conceitos na prática em produção, confira também nossa análise técnica sobre Como testar transistor JFET na bancada com multímetro.

Considerações finais sobre resgate de dados no Git

Dominar o terminal do Git transforma momentos de crise em pequenos incidentes de percurso solucionáveis com comandos precisos. Compreender que o sistema foi desenhado para proteger o desenvolvedor contra seus próprios erros remove o medo de experimentar e avançar em projetos complexos. Sempre verifique o status do repositório com frequência, utilize o reflog como sua rede de segurança definitiva e pratique esses comandos em ambientes controlados para ganhar confiança na rotina diária de desenvolvimento.