Recupere dados específicos usando comandos do Git

Concluído

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"