PassFront
  1. PassFront
  2. База знаний
  3. История и отмена изменений

Какой инструмент в Git поможет найти коммит с багом?

История и отмена изменений

Главный инструмент поиска коммита с багом — `git bisect`: бинарный поиск по истории.

git bisect

git bisect start
git bisect bad              # сейчас баг есть
git bisect good v2.3        # здесь его не было
# проверяем предложенный коммит и отмечаем good или bad
git bisect reset

За ~10 шагов проверяется история из 1000 коммитов. Проверку можно автоматизировать: git bisect run npm test.

Дополнительные инструменты

  • `git log -S 'текст'` — коммиты, где добавили или удалили строку:
git log -S 'calculateTotal' --oneline
  • `git log --grep`, `--since`, `--author` — поиск по сообщениям, дате, автору.
  • `git blame` — кто и в каком коммите менял каждую строку файла.
  • `git show <hash>` — посмотреть изменения конкретного коммита.

Коротко для собеседования

git bisect бинарным поиском находит коммит, где появился баг; дополняют его git log -S, git blame и git show.

Подробнее: Pro Git — Отладка с помощью Git

Другие вопросы раздела