Marcos trabalha em uma equipe de desenvolvimento de software que utiliza o Git como plataforma de gestão de configuração. Um membro da equipe, no entanto, fez um commit que introduziu, de maneira não intencional, um código com comportamento errático. Assinale a opção que indica o comando do Git que Marcos utilizou para fazer uma pesquisa binária para descobrir qual commit, no histórico do seu projeto, introduziu esse problema.
- A)bisect.
Correta, porque git bisect faz a busca binária no histórico para identificar o commit que introduziu o erro.
- B)fetch.
Errada, porque git fetch apenas traz atualizações de um repositório remoto, sem investigar commits problemáticos.
- C)find.
Errada, porque find não é comando do Git para rastrear commits; ele seria associado a busca de arquivos em outros contextos.
- D)locate.
Errada, porque locate também não faz análise do histórico do Git; é um comando ligado à localização de arquivos no sistema.
- E)rebase.
Errada, porque git rebase serve para reescrever e reorganizar commits, não para descobrir qual commit causou um bug.
Gabarito: A
Quando um erro aparece depois de um commit e você quer descobrir em qual ponto do histórico ele nasceu, o Git tem uma ferramenta perfeita para isso: o bisect. A ideia é simples e elegante, quase um "detetive digital": você marca uma versão como boa e outra como ruim, e o Git vai testando o meio do caminho até achar o commit culpado. Isso é uma busca binária aplicada ao histórico do projeto. Esse recurso é muito usado quando o defeito não é fácil de perceber de cara, porque o problema pode ter surgido em um commit antigo e só ter sido notado depois. Em vez de revisar tudo na mão, você deixa o Git reduzir o universo de suspeitos de forma rápida e inteligente. É economia de tempo e de paciência, dois recursos raríssimos em desenvolvimento. Por isso o gabarito é a letra A. O comando git bisect serve exatamente para localizar o commit que introduziu um comportamento errado, comparando versões boas e ruins até encontrar o ponto exato da falha. A lógica é a mesma da pesquisa binária: cada teste corta pela metade o caminho restante. Os outros comandos da questão pertencem a tarefas diferentes, como buscar alterações em um repositório remoto, reorganizar commits ou localizar arquivos, mas nenhum deles faz essa investigação binária no histórico para descobrir a origem de um bug.