Просмотр истории изменений¶
Git предоставляет мощные инструменты для навигации по истории коммитов.
Базовый просмотр¶
Список последних коммитов¶
git log
Показывает полную историю с деталями: хеш, автор, дата, сообщение. Выход — клавиша q.
Краткий список (одна строка на коммит)¶
git log --oneline
Пример вывода:
a1b2c3d Добавить валидацию email
e4f5g6h Исправить стиль кнопки
i7j8k9l Initial commit
Ограничение количества коммитов¶
git log -n 5
# или
git log -5
Покажет только последние 5 коммитов.
Продвинутые форматы вывода¶
Графическое представление веток¶
Одна из самых полезных команд для понимания структуры репозитория:
git log --oneline --graph --all
--graph: рисует аски-арт графа веток.--all: показывает все ветки, а не только текущую.
Совет: добавьте это как алиас lg (см. раздел настройки).
С статистикой изменений¶
git log --stat
Показывает, какие файлы менялись и сколько строк добавлено/удалено.
Показать изменения в коде (diff)¶
git log -p
Показывает полный diff для каждого коммита. Осторожно: может быть очень много текста.
По автору¶
git log --author="Daniil"
По дате¶
git log --since="2 weeks ago"
git log --until="2023-01-01"
По тексту сообщения или изменениям в коде¶
Найти коммиты, где в сообщении есть слово "fix":
git log --grep="fix"
Найти коммиты, где менялся конкретный текст в коде:
git log -S "функцияLogin"
(Полезно для поиска момента, когда функция была добавлена или удалена).
Форматирование вывода¶
Можно настроить вывод под себя:
git log --pretty=format:"%h - %an, %ar : %s"
Где:
- %h: короткий хеш.
- %an: имя автора.
- %ar: время относительно сейчас ("2 hours ago").
- %s: тема коммита.
Пример красивого алиаса:
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
Поиск по файлам¶
Посмотреть историю конкретного файла:
git log путь/к/файлу
Посмотреть, кто и когда менял каждую строку файла (blame):
git blame файл
Очень полезно для понимания контекста чужого кода.