Git divide ao meio para encontrar um bug

O comando do comando Git bisect usa git para encontrar em qual commit um bug foi introduzido. Depois disso, tenho certeza de que você vai se perguntar onde tem estado toda sua carreira.

A primeira coisa a fazer é encontrar um commit onde o bug não estava presente e lembrar seu hash (por exemplo, 1234). A próxima coisa é encontrar um commit onde o bug estava presente e lembrar seu hash (por ex. 5678).

E então podemos iniciar a busca do bug, digite os próximos comandos no repositório git:

git bisect start
git bisect good
1234
git bisect bad
5678

Neste caso, estamos configurando para git que o bom commit foi aquele com hash 1234 e o aplicativo está quebrado no hash 5678.

Depois disso, git move o HEAD para um commit bem no meio entre os commits bons e ruins, e faz o checkout dessa versão.

O próximo passo é tentar a versão de checkout e ver se o bug estava presente ou não. Se não estiver presente, executamos:

git bisect good

por outro lado, se o bug já foi introduzido, devemos executar:

git bisect bad.

Nesse ponto, o git move o HEAD entre o commit atual e o início ou fim dos commits (dependendo se o bug já estava presente ou não). E isso inicia um processo recursivo (na verdade git bisect usa pesquisa binária) até que o bug seja encontrado.

Por fim, o git nos mostrará o commit com o erro, para que possamos inspecionar o que foi introduzido. Finalmente, devemos executar:

git bisect reset

para deixar HEAD apontando para o último commit.

Você pode encontrar um screencast em Git Bisect in Action

Obrigado a @lightguard por me mostrar esse comando.

Continuamos aprendendo,
Alex.