Recuperar dados específicos usando comandos do Git
A capacidade de recuperar dados usando comandos Git é crucial para os desenvolvedores reverterem alterações acidentais, restaurarem arquivos excluídos ou recuperarem confirmações perdidas. Ele contribui para minimizar o tempo de inatividade inesperado e garantir a continuidade do projeto. No entanto, embora seus benefícios sejam claros, é importante apontar seus riscos potenciais. Ao aplicar o comando Git descrito nesta unidade, é essencial ter cuidado adequado, especialmente ao manipular o histórico de confirmação ou reverter alterações, pois erros podem levar à perda de dados.
Comandos de recuperação de dados do Git
Os comandos do Git que lidam com a recuperação de dados podem ser agrupados em várias categorias, incluindo recuperação de confirmações, arquivos, linhas de código específicas e commits ou branches excluídos.
Recuperando confirmações
- git log: lista o histórico de commits de um repositório. Você pode navegar pelo log para encontrar a confirmação que deseja recuperar.
- git checkout <commit>: alterna para um commit específico, efetivamente "restaurando" o estado do repositório nesse commit.
- git cherry-pick <commit>: aplica as alterações introduzidas por um commit específico no branch atual.
Recuperando arquivos
- git checkout <commit><do arquivo>: restaura um arquivo específico de um commit anterior.
- git restore <arquivo>: descarta as alterações locais e restaura o arquivo para seu último estado commitado, desde que você ainda não tenha commitado as alterações.
Recuperando linhas de código específicas
- git blame <arquivo>: exibe a revisão e o autor de cada linha em um arquivo, ajudando você a identificar o commit que introduziu uma alteração específica.
- git show <commit>:<arquivo>: exibe o conteúdo de um arquivo em um commit específico. Você pode especificar a confirmação e o caminho do arquivo para ver o conteúdo como ele existia naquele momento.
Recuperando commits ou branches excluídos
- git reflog: exibe um registro de todos os commits. Você pode usá-lo para localizar o hash SHA-1 de um commit ou branch excluído anteriormente e, em seguida, realizar checkout ou restaurá-lo.
- git fsck --lost-found: verifica a integridade do repositório e lista quaisquer commits que não são alcançáveis a partir de nenhuma branch ou tag. Você pode usá-lo para recuperar confirmações perdidas.
Lembre-se de usar esses comandos com cuidado, especialmente ao manipular o histórico de confirmação ou reverter alterações. Sempre crie um backup do repositório antes de iniciar ou usar o git stash para salvar as alterações atuais antes de tentar qualquer operação de recuperação.
Cenário de exemplo
Vamos percorrer um cenário de exemplo que ilustra o processo de uso de comandos git para recuperar um arquivo excluído. Presumimos que um arquivo chamado example.txt que reside em seu repositório Git foi excluído acidentalmente e você precisa recuperá-lo.
Exibindo o Histórico de Commits:
- Comece exibindo o histórico de commits.
git log - Na listagem de histórico de confirmação, identifique o hash SHA-1 da confirmação em que o arquivo example.txt estava presente pela última vez.
restaurando o arquivo excluído:
- Depois de identificar o hash SHA-1 da confirmação, use o check-out do git para restaurar o arquivo:
git checkout <commit_SHA>^ -- example.txt - Substitua <commit_SHA> pelo hash SHA-1 da confirmação. O símbolo ^ indica o pai do commit, restaurando efetivamente o arquivo para seu estado antes da exclusão.
Verificando alterações:
- Depois de restaurar o arquivo, verifique se ele foi restaurado com êxito verificando o status do repositório:
status do git - Valide se o example.txt esteja listado como um arquivo modificado ou não rastreado.
preparação e confirmação de alterações:
- Se o arquivo estiver listado como modificado, prepare-o para o commit.
git add example.txt - Confirme as alterações com uma mensagem de confirmação apropriada:
git commit -m "example.txtRestaurado"