advanced
git bisect
Бинарно ищите по истории коммитов с воспроизводимым тестом, чтобы быстро найти первое плохое изменение.
`git bisect` бинарно ищет первый плохой коммит. Нужен **детерминированный** классификатор: тест, скрипт или шаг сборки good vs bad.
git bisect start
git bisect bad # текущий HEAD плохой
git bisect good v2.3.0 # известный хороший тег
# Git checkout середины — тест, затем:
git bisect good # или git bisect bad
git bisect run npm test -- --grep="regression"
git bisect reset
Пропускайте не собирающиеся коммиты через `git bisect skip`. Автоматизируйте `bisect run` при надёжном тесте.
На интервью: flaky-тесты ломают bisect, первый bad vs root cause, автоматизация классификации.
Типовые ошибки: flaky меняет good/bad; первый bad только проявляет старый баг; нет ручной проверки suspect после bisect.
Компромисс — скорость bisect (log₂ n шагов) против затрат на стабильный reproducer.
Чеклист:
- Стабилизируйте воспроизведение до bisect.
- `bisect run` где возможно.
- skip для не собирающихся коммитов.
- Проверка финального suspect вручную.