Skip to content

Instantly share code, notes, and snippets.

@ArturJS
Last active September 24, 2025 14:10
Show Gist options
  • Select an option

  • Save ArturJS/62a60f013ba446a5d9a52afce1085f3e to your computer and use it in GitHub Desktop.

Select an option

Save ArturJS/62a60f013ba446a5d9a52afce1085f3e to your computer and use it in GitHub Desktop.
How to use git bisect

Git Bisect - Простая инструкция

git bisect - это мощный инструмент, который помогает найти точный коммит, где была введена ошибка, используя бинарный поиск.

Шаги по использованию git bisect:

  1. Запустите процесс bisect:

    git bisect start
  2. Отметьте текущий коммит как плохой (содержит ошибку):

    git bisect bad
  3. Найдите и переключитесь на известный хороший коммит (до появления ошибки):

    git log --oneline  # найдите хеш хорошего коммита
    git bisect good <хеш-коммита>
  4. Протестируйте текущий коммит:

    • Запустите тесты или проверьте, есть ли ошибка
    • Если ошибка присутствует, отметьте как плохой:
      git bisect bad
    • Если ошибки нет, отметьте как хороший:
      git bisect good
  5. Повторите шаг 4 до тех пор, пока git bisect не найдет проблемный коммит

  6. Завершите процесс bisect:

    git bisect reset

Пример сессии

# Запуск bisect
git bisect start

# Отметить текущий коммит как плохой
git bisect bad

# Отметить коммит двухнедельной давности как хороший
git bisect good abc1234

# Git переключится на коммит между ними
# Протестируйте его, затем отметьте как хороший или плохой
git bisect good  # или git bisect bad

# Продолжайте до тех пор, пока не найдете проблемный коммит
# Git сообщит: "abc5678 is the first bad commit"

# Вернитесь к исходной ветке
git bisect reset

Полезные фичи

  • Используйте автоматизированное тестирование: Можно запустить скрипт, который возвращает 0 для хороших коммитов и 1 для плохих:

    git bisect run ./test-script.sh
  • Пропускать коммиты: Если коммит нельзя протестировать (например, это merge-коммит), используйте:

    git bisect skip
  • Визуализация процесса: Используйте git bisect log чтобы увидеть, что вы уже сделали

  • Остановка: Если хотите остановить процесс bisect, используйте git bisect reset

Красота git bisect в том, что он эффективно сужает круг поиска проблемного коммита, тестируя примерно половину оставшихся коммитов каждый раз, что делает процесс намного быстрее, чем ручная проверка каждого коммита по отдельности.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment