Какой инструмент в 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