Oi Ademir,
os dois códigos são usados pra buscar commits, como você disse. Na maior parte das vezes que usei os dois, estava a procura de um commit que causou algum bug bem específico. Assim, vou te responder na perspectiva de alguém que está a procura de um bug.
O blame
está diretamente ligado a um arquivo específico. Você sabe qual o arquivo especificamente que está gerando o bug, mas não sabe a partir de qual commit o bug foi inserido. Então você pode rodar um git blame arquivo
e aí ver todos os commits que mexeram nesse arquivo.
Como você não sabe qual dos commits foi o responsável, você vai ter que que voltar um a um até achar o commit que causou o bug.
E nesse caso são pra bugs nos quais você consegue apontar o código de algum arquivo como causador.
Se você não tiver ideia de qual arquivo está gerando o bug, ou se suspeitar que um conjunto de códigos em arquivos diferentes pode estar gerando o bug, você não vai ter onde fazer um blame
. Não vai ter ideia de quais commits olhar. E é aí que entra o bisect
O bisect
vai te ajudar a achar o commit, sem saber necessariamente quais arquivos são os causadores.
Você vai navegar por vários commits, parando a cada commit pra testar seu código e ver se o bug está lá ou não, até o momento que chegar no commit que gerou o bug. Quando achar o commit, você vai conseguir ver quais arquivos foram alterados naquele commit e provavelmente achar a fonte do bug.
PS: Essa busca pelos seus commits usando o bisect
é uma busca binária. O que significa que a busca é mais otimizada e não vai ter que olhar todos os commits do seu repositório.