Git reflog e pasta .git: a combinação poderosa para recuperar arquivos perdidos em segundos
- #Git
O Git é uma ferramenta de controle de versionamento amplamente utilizada por desenvolvedores em todo o mundo. Uma das funcionalidades mais poderosas do Git é a capacidade de recuperar facilmente as alterações anteriores do seu código.
Porém, você já utilizou algum comando considerado "irreversível"? Talvez tenha executado algo do tipo:
git reset --hard head~2
Após a execução do comando, o projeto continuou normalmente. Porém, algum tempo depois, você percebeu que um equívoco havia sido cometido. E agora, o que fazer?
O comando git reflog permite visualizar o histórico de referências do Git, incluindo todos os commits que afetaram o seu repositório. Isso pode ser especialmente útil em situações em que você precisa recuperar uma alteração que foi desfeita ou se perdeu por algum motivo.
Ao executar o comando git reflog, o Git exibe uma lista de todos os commits que foram feitos no repositório. Cada commit é identificado por um hash único que pode ser usado para acessar o histórico de alterações do arquivo em questão. Para usar o git reflog, execute o comando a seguir no terminal:
git reflog
Após isso, você consegue utilizar o SHA-1 (o hash único) do commit para o qual você deseja retornar.
Além do git reflog, outra funcionalidade útil do Git é a capacidade de usar a pasta .git como backup. A pasta .git contém todo o histórico de alterações do seu repositório Git, incluindo todas as versões anteriores dos arquivos. Isso significa que, se você excluir acidentalmente um arquivo ou precisar recuperar uma versão anterior do código, pode fazê-lo facilmente usando a pasta .git como backup.
Para usar a pasta .git como backup, basta executar o seguinte comando no terminal:
git checkout .
Esse comando copia todos os arquivos do histórico de alterações para a pasta de trabalho atual, permitindo que você acesse as versões anteriores do código.
Se você precisar recuperar um arquivo específico que foi perdido, é possível usar o comando:
git checkout <commit-hash> <file-path>
substituindo o <commit-hash> pelo hash do commit em que o arquivo ainda existia e o <file-path> pelo caminho completo do arquivo perdido. Esse comando irá recuperar o arquivo específico do commit selecionado e adicioná-lo ao diretório de trabalho atual.
Ao usar a pasta .git como backup, é importante ter cuidado para não fazer alterações diretamente na pasta .git. Isso pode corromper o histórico de alterações e causar problemas com o seu repositório Git.
Caso queira testar, você pode copiar algum projeto versionado com Git, excluir todos os arquivos, exceto a pasta .git, acessar o terminal (git bash) e executar o comando "git checkout ." para ver a mágica acontecer...