Git School · FluxGit

Recuperar uma branch apagada no Git

FluxGit ·

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_COMMIT

Mantenha 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_COMMIT

Primeiro 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-branch

Conflitos 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 --unreachable

Confira 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 --short

Perguntas 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

Git School · 1:51

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.

Recuperar uma branch Git excluída com reflog
Narração em inglês. Há legendas manuais no YouTube em 11 idiomas. Esta transcrição está em português brasileiro.

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
  1. 00:03 Você excluiu uma branch com trabalho nela: git branch -D, dois commits que nunca foram mesclados em nenhum lugar. Veja como recuperá-los.
  2. 00:13 No FluxGit, a branch desapareceu da lista.
  3. 00:17 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.
  4. 00:36 Abra a Safety Timeline. Ela mostra o reflog em frases simples.
  5. 00:44 Find a lost commit: digite parte da mensagem. Um resultado: o último commit da branch excluída.
  6. 00:52 Create branch here. Uma branch de recuperação aponta para esse commit, e nada mais se move.
  7. 00:58 Os dois commits estão de volta no grafo.
  8. 01:02 Ative o Ref journal para este repositório.
  9. 01:06 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.
  10. 01:15 Casos que ignoram o hook e outras implementações de Git não são cobertos.
  11. 01:19 Ele registra referências, não arquivos sem commit.
  12. 01:23 A recuperação ainda exige que os objetos de commit existam.
  13. 01:28 No terminal: git reflog, encontre o commit e depois execute git branch com o nome antigo e esse commit.
  14. 01:36 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.

Fluxos relacionados

Baixar FluxGit