Vamos fingir que você está trabalhando com colaboradores em um projeto e, depois de um git pull, você percebe que alguns cukes / especificações não estão mais passando.
Bem, a boa notícia é que você pode facilmente encontrar o commit que introduziu essa falha usando git bisect .
Primeiro, você precisa estar em um repositório limpo .
Se você tiver alguma modificação local use o comando
$ git stash
Agora, podemos começar a bissecção!
$ git bisect start
$ git bisect bad
Vamos fingir que a revisão dca6dd7517 foi a última versão testada que era boa
$ git bisect good dca6dd7517
Bisecting: 13 revisions left to test after this (roughly 4 steps)
O git-bisect coloca você em um commit específico e você pode executar seus cukes / especificações para ver se esta revisão contém a falha que você está procurando e marcar a revisão como boa ou ruim
$ rspec
[...]
$ git bisect good # or bad
Bisecting: 6 revisions left to test after this (roughly 3 steps)
E assim por diante até que não haja mais nenhuma etapa.
Você receberá esta mensagem
<revision> is the first bad commit
Agora você sabe qual commit é o culpado 🙂
Depois de terminar a bissecção, basta executar
$ git bisect reset
Por último mas não menos importante
A qualquer momento, você pode ver o progresso da bissecção
$ git bisect log
Você pode pular para marcar um commit específico como bom ou ruim digitando
$ git bisect skip
Se você escondeu suas alterações no início, não se esqueça de abri-lo
$ git stash pop