Git·19 вопросов

Как посмотреть историю коммитов и найти нужный?

Ответ

История коммитов — главный инструмент для понимания, что и когда изменилось в проекте. Git предлагает несколько способов просмотра и поиска.

Базовый просмотр: git log показывает историю в обратном хронологическом порядке — последние коммиты сверху. Каждый коммит содержит хэш, автора, дату и сообщение. Команда git log --oneline показывает компактный формат — один коммит на строку, только хэш и сообщение. Полезно для обзора большой истории.

Фильтрация: git log -5 показывает последние 5 коммитов. git log --author="Иван" фильтрует по автору. git log --since="2 weeks ago" — коммиты за последние 2 недели. git log --since="2026-01-01" --until="2026-06-01" — диапазон дат. git log -- <файл> показывает только коммиты, затрагивающие конкретный файл.

Поиск по сообщению: git log --grep="авторизация" ищет коммиты с ключевым словом в сообщении. Флаг -i делает поиск нечувствительным к регистру: git log --grep="auth" -i. Можно искать по регулярным выражениям: git log --grep="fix\(.*\)".

Визуализация: git log --graph --oneline --all показывает дерево веток в виде графа — удобно для понимания структуры слияний. Флаг --all включает все ветки, не только текущую. Альтернатива: git log --graph --oneline --decorate — добавляет метки веток и тегов.

Изменения в коммите: git show <hash> показывает полный diff конкретного коммита. git show HEAD — последний коммит. git show HEAD~2 — третий с конца. Команда git diff <hash1>..<hash2> показывает разницу между двумя коммитами.

Поиск бага с bisect: git bisect start, git bisect bad (текущий коммит сломан), git bisect good <hash> (этот коммит работал). Git автоматически переключает коммиты в середине диапазона. Вы тестируете и отмечаете git bisect good или git bisect bad. Git находит коммит, который внёс баг. Завершение: git bisect reset.

Blame: git blame <файл> показывает, кто и в каком коммите написал каждую строку файла. Полезно для понимания контекста изменений. git blame -L 10,20 <файл> — только строки 10-20.

Полезен ли этот ответ?

Другие вопросы этой темы

Связанные вопросы из других тем