Investigando bugs com Git

Git é mais que adicionar checkpoints para não perder trabalho. Um truque muito útil é saber como identificar qual commit introduziu bugs em seu projeto. Com vocês, git bisect.

Apenas três comandos

Estou assumindo que você está na versão problemática do código num projeto git. Agora, você precisa:

  1. Começar a investigação com git bisect start;
  2. Marcar a versão atual como problemática com git bisect bad:
  3. Marcar a última versão que funciona com git bisect good <commit-hash>:

bom, ruim, repete

Após a configuração inicial, o git cria uma lista de commits a partir dos marcadores bom e ruim setados no passo anterior. Então, um checkout para o primeiro commit da lista é executado.

Agora, tudo que você deve fazer é informar se o problema persiste no commit da vez. Se sim, execute git bisect bad; se não, execute git bisect good.

Por fim, depois de passar por todos os commits da lista, o git vai te mandar para o commit que introduziu o problema. Essa será a evidência que precisa para identificar e resolver o problema.

Para retornar ao commit original, antes de iniciar o bisect, execute git bisect reset.

Reference

https://git-scm.com/docs/git-bisect/