Menu
Coddy logo textTech

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.

git reflog registra cada posição por onde o HEAD passou, então um commit perdido em um reset ou rebase pode ser achado e restaurado.

Sintaxe

CommandWhat it does
git reflogMostra 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.

StepCommandResult
1git reflogEncontre o commit anterior ao reset
2git 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.
Coddy programming languages illustration

Aprenda Git com a Coddy

COMEÇAR