Git Reflog
Última atualização
git reflog registra todos os lugares para onde HEAD apontou - cada commit, checkout, reset e rebase. Como o Git mantém esses commits por um tempo mesmo depois de saírem dos seus branches, o reflog é a sua rede de segurança: ele permite encontrar e recuperar o trabalho que um reset --hard, um rebase malfeito ou um branch excluído pareciam ter destruído.
Experimente isto no terminal playground - um shell de verdade no seu navegador, sem nada para instalar.
Sintaxe
| Command | What it does |
|---|---|
git reflog | Mostra as posições recentes de HEAD, com os hashes |
git reflog show <branch> | Mostra o reflog de um branch |
git reset --hard HEAD@{1} | Volta HEAD para uma posição anterior |
git branch recovered <hash> | Recria um branch em um commit perdido |
Recuperação após um erro
Desfaça um reset ruim encontrando o commit anterior ao reset.
| Step | Command | Result |
|---|---|---|
| 1 | git reflog | Encontre o commit anterior ao reset |
| 2 | git reset --hard HEAD@{1} | Restaure seu branch para ele |
Perguntas frequentes sobre git reflog
O que é o git reflog?
É um registro de todos os lugares para onde
HEAD (e a ponta de cada branch) apontou no seu repositório local - após commits, checkouts, resets, merges e rebases. Diferente do git log, que segue a ancestralidade dos commits, o reflog é um registro cronológico das suas ações, e é isso que o torna útil para recuperação.Como recupero um commit após git reset --hard?
Execute
git reflog para encontrar a entrada do commit em que você estava antes do reset (algo como HEAD@{1}) e então git reset --hard <that-hash> (ou HEAD@{1}) para voltar a ele. O commit não foi realmente excluído - ele apenas ficou sem um branch apontando para ele, e o reflog ainda conhece seu hash.Como restauro um branch excluído?
Encontre o último commit do branch no
git reflog e então recrie o branch ali: git branch <name> <hash>. Enquanto a exclusão for recente (dentro do prazo de expiração do reflog do Git, normalmente semanas), os commits ainda ficam acessíveis dessa forma.O git reflog funciona entre clones?
Não - o reflog é local ao seu repositório e não é enviado nem clonado. Ele só registra as ações na sua máquina. Por isso ele pode salvar erros locais, mas não consegue recuperar algo que só existiu em um clone diferente.
Posso praticar isso online?
Sim. Abra o terminal playground para executar
git reflog em um shell de verdade no seu navegador - sem nada para instalar. O curso interativo e gratuito de Git da Coddy também aborda como desfazer alterações e recuperar trabalho passo a passo.