Recuperar 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. 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"