Перейти к содержанию

Просмотр истории изменений

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 файл

Очень полезно для понимания контекста чужого кода.


Назад: Коммиты → | Далее: Управление ветками →