Git Bisect
Бинарный поиск по истории, чтобы найти коммит, внёсший баг
Когда баг появился где-то в последней сотне коммитов, но вы не знаете где именно, Git Bisect находит его бинарным поиском вместо проверки коммитов по одному. Repository → More → Bisect… открывает диалог.
Как это работает
Bisect нужны две опорные точки:
- Bad commit — тот, что содержит баг (часто
HEAD). - Good commit — более старый, в котором бага ещё нет (тег вроде
v1.0или хэш).
Git делает checkout коммита примерно посередине. Вы тестируете его и говорите GitBor, есть ли баг; каждый ответ делит диапазон пополам, так что даже сотни коммитов сужаются за несколько шагов.
Запуск сессии
- Откройте Repository → More → Bisect….
- Заполните Bad commit (например,
HEAD) и Good commit (например,v1.0или хэш). - Нажмите Start Bisect — GitBor сделает checkout середины.
Во время сессии
Диалог показывает текущий коммит под тестом и оценку оставшихся шагов. Соберите и протестируйте этот checkout, затем отметьте результат:
| Кнопка | Когда использовать |
|---|---|
| Good | Бага здесь нет. |
| Bad | Баг здесь есть. |
| Skip | Этот коммит нельзя протестировать (не собирается, посторонняя поломка) — Git возьмёт соседний. |
Живой лог Output зеркалит сырой вывод git bisect. Когда диапазон сужается до одного коммита, GitBor сообщает Found! — это виновник.
Завершение
Нажмите Abort Bisect, чтобы завершить сессию и вернуть рабочее дерево туда, где оно было до старта. Делайте это всегда по завершении — найден виновник или нет — чтобы вернуться на свою обычную ветку.