Meu repositório git de alguma forma ficou instável - carreguei o msysgit esta manhã e em vez de o nome do branch ser mostrado após o diretório atual, ele diz "((ref: re ...))", 'git status' relata tudo como um novo arquivo, 'git log' e 'git reflog' me dizem "fatal: revisão padrão inválida 'HEAD'" e assim por diante.
Fazer 'git reflog --all' ou 'gitk --all' mostra que o resto do repositório está intacto, mas parece que o branch em que eu estava trabalhando simplesmente desapareceu, o que explica por que HEAD parece não existir / apontar para qualquer coisa.
Eu sei que o git mantém controle de todos os tipos de informações, e estou assumindo que meus commits ficaram órfãos de alguma forma, então existe algum comando que vai me mostrar esses commits para que eu possa redefinir HEAD para eles?
EDIT: Oh querido. Eu descobri 'git fsck' e 'git fsck --full' reporta "fatal: objeto 03ca4 ... está corrompido". O que diabos posso fazer sobre isso?
EDIT: Oh querido, querido. Eu verifiquei outro branch e tentei recriar o branch original com o mesmo nome usando 'git checkout -b lostbranchname' e git diz "erro: não foi possível resolver referência refs / heads / lostbranchname: Sem erro, fatal: Falha para bloquear ref para atualização: Sem erro ". 'Nenhum erro' deve ser um erro particularmente desagradável. Portanto, parece que ainda está por aí, mas incapaz de ser usado e incapaz de ser morto.
EDIT: Super duper oh querido. Eu fiz um monte de desempacotamento, reembalagem e substituição de coisas como sugerido aqui: Como recuperar objetos Git danificados por falha no disco rígido? , mas agora estou recebendo outro hash relatado como corrompido, para algo tão inócuo como 'status git'. Acho que a coisa toda está bloqueada. Git é adorável e tudo, mas eu não deveria ter que lidar com esse tipo de coisa.
git checkout -b lostbranchname
- se você só se preocupa com o nome do branch (não com o conteúdo dele), você pode excluí-lo (ou renomear) manualmente.git/refs/heads/lostbranchname
- esperançosamente, isso resolverá o problema.