Recuperar uma branch apagada no Git
Os blocos são casos diferentes, não um script único. Escolha o caso do seu repositório. Substitua branches, caminhos e VERIFIED_COMMIT antes de usar. Comandos de cancelamento só valem para sua operação ativa; não execute ambas as alternativas.
Resposta curta
Apagar uma branch remove sua referência, não necessariamente seus commits. Encontre o último commit preservado e crie uma branch que dê nome a ele.
Exemplo e condições
Você precisa do commit correto e dos objetos disponíveis. A mensagem de exclusão pode mostrar o SHA; guarde-o e confira antes de agir.
Inspecione antes de alterar
Leia o reflog de HEAD e o histórico candidato. O reflog da branch é apagado junto com ela, mas o registro de HEAD pode preservar movimentos relevantes.
git reflog --date=iso
git show VERIFIED_COMMIT
git log -5 --oneline VERIFIED_COMMITMantenha referência ou checkout separado
Use git branch rescue/deleted-branch VERIFIED_COMMIT para nomear o commit sem trocar de branch. Não é necessário sobrescrever o diretório de trabalho.
git branch rescue/deleted-branch VERIFIED_COMMITPrimeiro fluxo
Confira com git show e git log se o candidato contém a ponta e o histórico desejados. Depois recrie o nome original, se estiver livre.
Escolha o outro resultado deliberadamente
Se havia uma branch remota, confirme que a referência ainda existe antes de buscar e recriar a branch local. Um push antigo não garante sua preservação.
Limites e exceções
Um clone novo não contém seu reflog local. Expiração do reflog e remoção de objetos têm políticas separadas; evite limpeza agressiva durante a recuperação.
git ls-remote --heads origin my-branchConflitos e limpeza
Sem uma referência, git fsck --full --no-reflogs --unreachable pode encontrar commits preservados. Inspecione os candidatos; o comando não identifica sozinho a branch desejada.
git fsck --full --no-reflogs --unreachableConfira o resultado
Confira o histórico e o estado da branch recriada. Recuperar commits não restaura alterações de arquivos que nunca foram commitadas.
git log -5 --oneline rescue/deleted-branch
git status --shortPerguntas frequentes
O nome perdido não é um backup. Se o objeto desapareceu, procure outra cópia, um colaborador ou uma referência remota realmente disponível.
Revise a operação no FluxGit
O FluxGit pode proteger a exclusão feita pela app. O Ref journal habilitado registra referências quando o hook instalado executa; desvios do hook e outras implementações Git ficam fora dessa cobertura.
Referências oficiais do Git
Recuperar uma branch Git excluída com reflog
Recupere uma branch local excluída recentemente encontrando seu commit preservado e criando uma nova branch. Veja reflog e a Safety Timeline do FluxGit em um repositório de teste e quando o hook instalado do Ref journal pode registrar mudanças de referências pela linha de comando Git.
Assistir no YouTube — abre uma nova aba
Gravado em um repositório de teste. Narração em inglês e legendas em português brasileiro. A recuperação exige objetos de commit preservados e registros disponíveis no reflog ou no diário; o Ref journal não faz backup de arquivos sem commit.
Ler a transcrição da narração
- Você excluiu uma branch com trabalho nela: git branch -D, dois commits que nunca foram mesclados em nenhum lugar. Veja como recuperá-los.
- No FluxGit, a branch desapareceu da lista.
- Veja por que o trabalho não foi perdido. Uma branch é um rótulo. git branch -D remove o rótulo, mas os dois commits continuam no repositório, sem nenhuma branch apontando para eles. O reflog ainda se lembra deles. Crie uma branch no último commit, e os dois estarão de volta.
- Abra a Safety Timeline. Ela mostra o reflog em frases simples.
- Find a lost commit: digite parte da mensagem. Um resultado: o último commit da branch excluída.
- Create branch here. Uma branch de recuperação aponta para esse commit, e nada mais se move.
- Os dois commits estão de volta no grafo.
- Ative o Ref journal para este repositório.
- Quando o hook Git instalado é executado, o FluxGit pode registrar exclusões de branches feitas pela linha de comando Git, inclusive comandos do terminal ou de agentes.
- Casos que ignoram o hook e outras implementações de Git não são cobertos.
- Ele registra referências, não arquivos sem commit.
- A recuperação ainda exige que os objetos de commit existam.
- No terminal: git reflog, encontre o commit e depois execute git branch com o nome antigo e esse commit.
- Resumo. Uma branch excluída é um rótulo perdido; o reflog ainda encontra os commits. Próxima aula: quando um agente de IA exclui seu código.