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
!
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
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)
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
Mas, se a versão estiver funcionando corretamente:
$ git bisect good
Após isso, ele irá responder:
Bisecting: 42 revisões deixadas para testar depois disso (aproximadamente 6 passos)
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)