GitBorGitBor

Git Bisect

Бинарный поиск по истории, чтобы найти коммит, внёсший баг

Когда баг появился где-то в последней сотне коммитов, но вы не знаете где именно, Git Bisect находит его бинарным поиском вместо проверки коммитов по одному. Repository → More → Bisect… открывает диалог.

Как это работает

Bisect нужны две опорные точки:

  • Bad commit — тот, что содержит баг (часто HEAD).
  • Good commit — более старый, в котором бага ещё нет (тег вроде v1.0 или хэш).

Git делает checkout коммита примерно посередине. Вы тестируете его и говорите GitBor, есть ли баг; каждый ответ делит диапазон пополам, так что даже сотни коммитов сужаются за несколько шагов.

Запуск сессии

  1. Откройте Repository → More → Bisect….
  2. Заполните Bad commit (например, HEAD) и Good commit (например, v1.0 или хэш).
  3. Нажмите Start Bisect — GitBor сделает checkout середины.

Во время сессии

Диалог показывает текущий коммит под тестом и оценку оставшихся шагов. Соберите и протестируйте этот checkout, затем отметьте результат:

КнопкаКогда использовать
GoodБага здесь нет.
BadБаг здесь есть.
SkipЭтот коммит нельзя протестировать (не собирается, посторонняя поломка) — Git возьмёт соседний.

Живой лог Output зеркалит сырой вывод git bisect. Когда диапазон сужается до одного коммита, GitBor сообщает Found! — это виновник.

Завершение

Нажмите Abort Bisect, чтобы завершить сессию и вернуть рабочее дерево туда, где оно было до старта. Делайте это всегда по завершении — найден виновник или нет — чтобы вернуться на свою обычную ветку.