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 вручную.