Recupere 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. 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 a devida cautela, especialmente ao manipular o histórico de confirmações ou reverter alterações, pois erros podem levar à perda de dados.
Comandos de recuperação de dados Git
Os comandos do Git que lidam com a recuperação de dados podem ser agrupados em várias categorias, incluindo a recuperação de commits, arquivos, linhas específicas de código e commits ou ramificações excluídas.
Recuperação de compromissos
- git log: lista o histórico de confirmação de um repositório. Você pode navegar pelo log para encontrar a confirmação que deseja recuperar.
- git checkout <commit>: muda para uma confirmação específica, efetivamente "recuperando" o estado do repositório nessa confirmação.
- Git Cherry-Pick <Commit>: Aplica as alterações introduzidas por uma confirmação específica à sua ramificação atual.
Recuperando arquivos
- Git Checkout commit><file>: restaura <um arquivo específico de uma confirmação anterior.
- Git Restore <File>: descarta as alterações locais e restaura o arquivo ao seu último estado confirmado, supondo que você ainda não tenha confirmado as alterações.
Recuperando linhas de código específicas
- Git Blame <File>: Exibe a revisão e o autor de cada linha em um arquivo, ajudando você a identificar a confirmação que introduziu uma alteração específica.
- git show <commit>:<file>: exibe o conteúdo de um arquivo em uma confirmação específica. Você pode especificar a confirmação e o caminho do arquivo para ver o conteúdo como ele existia naquele momento.
Recuperando confirmações ou ramificações excluídas
- git reflog: exibe um registro de todas as confirmações. Você pode usá-lo para encontrar o hash SHA-1 de uma confirmação ou ramificação excluída anteriormente e, em seguida, fazer checkout ou restaurá-lo.
- git fsck --lost-found: verifica a integridade do repositório e lista todas as confirmações que não podem ser acessadas a partir de qualquer ramificação ou tag. Você pode usar isso 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. Certifique-se sempre de criar um backup do repositório antes de iniciar ou use 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 usar comandos do Git para recuperar um arquivo excluído. Assumimos que um arquivo chamado example.txt residente em seu repositório Git foi excluído acidentalmente e você precisa recuperá-lo.
Visualizando o histórico de confirmação:
- Comece exibindo o histórico de confirmação:
Log do Git - Na listagem do histórico de confirmações, identifique o hash SHA-1 da confirmação onde o arquivo example.txt esteve presente pela última vez.
Restaurando o arquivo excluído:
- Depois de identificar o hash SHA-1 da confirmação, use o git checkout 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 dessa confirmação, restaurando efetivamente o arquivo ao 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 git - Valide esse example.txt listado como um arquivo modificado ou não rastreado.
Preparando e confirmando alterações:
- Se o arquivo estiver listado como modificado, prepare-o para confirmação:
git adicionar example.txt - Confirme as alterações com uma mensagem de confirmação apropriada:
git commit -m "example.txt restaurada"