Menu
Coddy logo textTech

Git Bisect

Última atualização

git bisect encontra o commit que introduziu um bug por busca binária. Você informa um commit sabidamente bom e um sabidamente ruim; ele faz checkout de um commit no meio do caminho, você o marca como good ou bad, e ele reduz o intervalo pela metade a cada vez - assim ele localiza o culpado em poucos passos, mesmo entre milhares de commits.

Experimente estes comandos no terminal playground - um shell real no seu navegador, sem nada para instalar.

git bisect faz busca binária no histórico entre um commit bom e um ruim, cortando pela metade a faixa suspeita a cada passo.

Sintaxe

CommandWhat it does
git bisect startInicia uma sessão de bisect
git bisect badMarca o commit atual como ruim
git bisect good <hash>Marca um commit sabidamente bom
git bisect good / git bisect badMarca cada commit testado
git bisect run ./test.shAutomatiza: executa um teste para marcar cada passo
git bisect resetEncerra o bisect, volta à sua branch

Exemplo prático

Descubra qual commit quebrou o build.

StepCommandResult
1git bisect startInicia a busca
2git bisect badO commit atual está quebrado
3git bisect good v1.0Esta tag antiga funcionava
4Teste, depois good/badRepita até o Git indicar o commit

Perguntas frequentes sobre git bisect

O que o git bisect faz?
Ele faz uma busca binária no histórico de commits para encontrar o commit exato que introduziu um bug. Você marca um commit como good e outro como bad; o Git faz checkout repetidamente do ponto médio para você testar, reduzindo o intervalo de busca pela metade a cada vez até identificar o primeiro commit ruim.
Como eu uso o git bisect?
Execute git bisect start, marque o estado quebrado atual com git bisect bad e um commit sabidamente funcional com git bisect good <hash>. O Git faz checkout de um ponto médio; teste-o e execute git bisect good ou git bisect bad. Repita até o Git reportar o primeiro commit ruim e então execute git bisect reset.
Posso automatizar o git bisect?
Sim. git bisect run <script> executa seu script a cada passo - o script deve sair com 0 para um commit bom e com valor diferente de zero para um ruim (executores de teste funcionam bem). O Git então faz o bisect automaticamente sem você marcar cada commit à mão, e imprime o commit problemático no final.
Como eu finalizo um bisect?
Execute git bisect reset para encerrar a sessão e voltar à branch e ao commit em que você estava antes de começar. Faça isso tendo encontrado ou não o commit ruim - isso limpa o estado temporário do bisect.
Posso praticar isso online?
Sim. Abra o terminal playground para executar git bisect em um shell real no seu navegador - sem nada para instalar. O curso interativo e gratuito de Git da Coddy também aborda como inspecionar o histórico passo a passo.
Coddy programming languages illustration

Aprenda Git com a Coddy

COMEÇAR