0Pricing
Git & GitHub Professional Workflow · Aula

Git Bisect para depuração

Utilize o `git bisect` para encontrar com eficiência o commit específico que introduziu um erro, economizando tempo valioso de depuração.

Git Bisect para depuração é uma aula grátis de Git & GitHub Professional Workflow no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Git & GitHub Professional Workflow, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Git & GitHub Professional Workflow inclui 4 aulas no total.

Encontrando erros mais rapidamente com o Git

A depuração pode ser difícil. Às vezes, um erro aparece e você não sabe qual alteração o causou.

git bisect é um comando poderoso do Git que ajuda a localizar a confirmação exata que introduziu um erro. Ele usa um algoritmo de busca binária para reduzir rapidamente milhares de confirmações.

O poder da busca binária

Imagine que o seu projeto tenha 100 confirmações e que um erro tenha surgido em algum ponto entre a primeira e a última. Verificar cada uma manualmente é demorado!

git bisect funciona como um jogo de "adivinhe o número":

  • Você informa ao Git uma confirmação "boa" (em que o erro não estava presente).
  • Você informa ao Git uma confirmação "ruim" (em que o erro está presente).
  • O Git escolhe uma confirmação aproximadamente no meio e pede que você a teste.
  • Você a marca como "boa" ou "ruim", e o Git reduz pela metade o espaço de busca.

Vamos iniciar a busca!

Para começar, você precisa informar ao Git que está iniciando uma sessão de busca binária. Este comando inicializa o processo:

git bisect start

Depois de iniciar, você especificará uma confirmação "ruim" conhecida (em que o erro existe) e uma confirmação "boa" conhecida (em que o erro definitivamente não existia).

Com frequência, a confirmação "ruim" é o seu HEAD atual, e uma confirmação "boa" pode ser uma etiqueta de versão mais antiga ou uma confirmação de alguns dias atrás.

Marcando os limites das suas confirmações

Depois de iniciar git bisect, você define o intervalo da busca:

  • Confirmação ruim: é uma confirmação em que você sabe que o erro existe. Use git bisect bad <commit-hash> ou simplesmente git bisect bad se ela for o seu HEAD atual.
  • Confirmação boa: é uma confirmação em que você sabe que o erro NÃO existia. Use git bisect good <commit-hash>.

Em seguida, o Git fará automaticamente o checkout de uma confirmação no meio desse intervalo.

Testando e reduzindo o intervalo

Depois que você marcar as confirmações boa e ruim, o Git fará automaticamente o checkout de uma confirmação no meio do intervalo. Sua tarefa é testar o código nessa confirmação selecionada.

  • Se o erro IS estiver presente, digite git bisect bad.
  • Se o erro IS NOT estiver presente, digite git bisect good.

O Git escolherá outra confirmação intermediária no intervalo restante. Você repetirá esse processo até que o Git encontre a primeira confirmação "ruim".

Simulando a introdução de um erro

Vamos imaginar um "erro" simples em um script. Simularemos um histórico de projeto em que um pequeno erro foi introduzido.

Este é o nosso script "bom" inicial:

main.sh

#!/bin/bash
echo "Hello from script!"
sum=0
for i in $(seq 1 3); do
  sum=$((sum + i))
done
echo "Sum is: $sum"

Demonstração passo a passo da busca binária manual

Agora, digamos que uma confirmação posterior tenha alterado acidentalmente o laço para seq 1 4, fazendo com que a soma ficasse incorreta (10 em vez de 6).

Começaríamos assim:

git bisect start

Em seguida, marcaríamos o nosso HEAD atual (em que o erro existe) como ruim:

git bisect bad HEAD

E uma confirmação mais antiga, que sabemos que funcionava, como boa:

git bisect good <old_good_commit_hash>

O Git nos orientará, fazendo o checkout das confirmações. Executaríamos ./main.sh, verificaríamos se a soma é 6 ou 10 e então digitaríamos git bisect good ou git bisect bad, conforme o caso.

Automatizando o processo de depuração

Testar cada confirmação manualmente ainda pode consumir muito tempo se o teste for complexo. git bisect run permite automatizar esse processo!

Você fornece um script que termina com:

  • 0 (zero) se a confirmação for boa.
  • 125 se a confirmação tiver de ser ignorada.
  • Qualquer outro valor diferente de zero (por exemplo, 1) se a confirmação for ruim.

O Git executará esse script em cada confirmação testada até encontrar o erro.

#!/bin/bash
./main.sh | grep "Sum is: 6"
if [ $? -eq 0 ]; then
  exit 0 # Good commit
else
  exit 1 # Bad commit
fi

Concluindo a sua busca

Quando git bisect identificar com sucesso a primeira confirmação ruim, ele informará o hash e a mensagem dessa confirmação.

Depois de encontrar a causa e entender o problema, é essencial redefinir o seu repositório para o estado original anterior ao início da busca binária:

git bisect reset

Este comando leva você de volta à confirmação em que estava quando iniciou a busca binária, limpando o estado temporário desse processo.

Verificação de conhecimentos sobre busca binária

Você acabou de executar git bisect start, marcou o seu HEAD atual como ruim e uma confirmação mais antiga como boa. O Git fez o checkout de uma confirmação intermediária.

Você executa os seus testes e o erro IS PRESENT nessa confirmação intermediária.

Recapitulação de <code>git bisect</code>

Parabéns! Você aprendeu a usar git bisect:

  • É uma ferramenta poderosa para encontrar a confirmação exata que introduziu um erro.
  • Usa uma busca binária para obter eficiência.
  • Você define confirmações "boas" (sem erros) e "ruins" (com erros).
  • Você pode automatizar o processo de testes com git bisect run <script>.
  • Lembre-se sempre de executar git bisect reset para limpar tudo depois da busca!

Perguntas Frequentes

A aula “Git Bisect para depuração” é grátis?

Sim — o texto completo de “Git Bisect para depuração” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Git & GitHub Professional Workflow, atualize para CoddyKit PRO. O curso de Git & GitHub Professional Workflow inclui 4 aulas no total.

O que vou aprender em “Git Bisect para depuração”?

Utilize o `git bisect` para encontrar com eficiência o commit específico que introduziu um erro, economizando tempo valioso de depuração. Você pratica Git & GitHub Professional Workflow com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Git & GitHub Professional Workflow?

Nenhuma experiência prévia é necessária. Git & GitHub Professional Workflow no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Git Bisect para depuração”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Git & GitHub Professional Workflow?

Sim. Cada aula de Git & GitHub Professional Workflow inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Git Reflog e recuperação do histórico
  2. Git Bisect para depuração
  3. Manutenção e organização do repositório
  4. Reescrevendo o Histórico com git filter-repo
← Voltar para Git & GitHub Professional Workflow