git fsck
Verifica o repositório e encontra objetos inalcançáveis
O comando 'git fsck' (file system check) verifica se cada objeto do repositório está íntegro e se o histórico está todo conectado. Também relata objetos órfãos (dangling) — commits e arquivos para os quais nada mais aponta, como um commit deixado por git reset --hard depois que o reflog o esquece. Eles ainda podem ser recuperados até o git gc apagá-los.
Sinopse
git fsck [--unreachable] [--no-reflogs] [--lost-found] [--full] [<object>...]Opções
Escolhendo a opção certa
Encontrar trabalho perdido
Tente primeiro o reflog
| Comando | Encontra |
|---|---|
git reflog | Todos os lugares por onde o HEAD passou (o mais fácil) |
git fsck --no-reflogs | Commits que nenhuma ref alcança |
git fsck --lost-found | Também arquivos órfãos (p. ex. preparados e depois perdidos) |
Exemplos
Conferir
git fsckSilencioso quando tudo está bem.
Encontrar commits perdidos
git fsck --no-reflogsCommits que nenhum branch ou tag alcança.
Recolhê-los
git fsck --lost-foundCopia-os para .git/lost-found.
Exemplos de fluxos de trabalho
git fsck --no-reflogsEncontrar commits órfãos
git show <hash>Conferi-lo
git branch rescue <hash>Guardá-lo
Solução de problemas
error: object file … is empty / corrupt
Causa: Dano do disco ou de uma queda
Busque uma cópia nova do remoto; faça antes backup de .git
Dicas e armadilhas
Boas práticas
- ✓Execute git fsck quando suspeitar de corrupção, antes do git gc.
Erros comuns
- ✗Entrar em pânico com objetos «dangling» — são sobras normais, limpas pelo git gc.
Perguntas frequentes
Um commit para o qual nada aponta. Ele é mantido até o git gc removê-lo (por padrão, depois que a entrada do reflog expira).