DEV Community

Cover image for Git Bisect > Encontrando o Commit Bugado
Felipe Ribeiro
Felipe Ribeiro

Posted on

Git Bisect > Encontrando o Commit Bugado

Então você roda a sua aplicação e descobre um bug!
Você olha o histórico de alterações do projeto e não consegue identificar quando o bug foi introduzido.
O jeito é fazer o checkout de cada revision e testar... um por um! Se for apenas 3 commits, ok! Mas se for 10, 15, 30... vai levar horas!

Aí que entra o git bisect!

Alt Text

O git bisect utiliza um algoritmo de pesquisa binária no histórico de alterações do seu projeto para descobrir qual commit introduziu o bug. Mas ele não faz tudo sozinho. Precisamos interagir bastante nesse processo mas ainda assim é bem mais fácil do que fazer tudo sozinho.

Para iniciarmos o processo, precisamos informar um commit "bad" (ruim) e um commit "good" (bom). Então o primeiro passo é descobrir um commit onde você tenha certeza de que a sua aplicação estava funcionando. Com esse commit na mão podemos começar.

$ git bisect start
$ git bisect bad            # A versão atual está ruim
$ git bisect good bf21fee   # bf21fee é uma versão boa
Enter fullscreen mode Exit fullscreen mode

Então o git bisect vai fazer uma análise e irá te responder algo assim:

Bisecting: 84 revisões deixadas para testar depois disso (aproximadamente 7 passos)
Enter fullscreen mode Exit fullscreen mode

A partir daí, ele vai selecionar um commit entre esses dois pontos, vai fazer o checkout e vai te perguntar se esse commit é "bom" ou "ruim". Então cabe a você decidir... ou melhor, testar! Faça o teste e verifique se o bug está lá.

Se o bug ainda estiver lá, basta digitar:

$ git bisect bad
Enter fullscreen mode Exit fullscreen mode

Mas, se a versão estiver funcionando corretamente:

$ git bisect good
Enter fullscreen mode Exit fullscreen mode

Após isso, ele irá responder:

Bisecting: 42 revisões deixadas para testar depois disso (aproximadamente 6 passos)
Enter fullscreen mode Exit fullscreen mode

Em seguida, ele irá escolher um outro commit, fará o checkout e te perguntará novamente se o commit é bom ou ruim. Agora é só ir repetindo esse processo até acabarem os commits. Então o git bisect irá te informar qual é o primeiro commit ruim.

Pronto! Agora é com você! Hora de corrigir esse bug!

Top comments (0)