Git log: красивый вывод, поиск по автору, дате и тексту

Категория: Git · Язык: Bash · Обновлено:

Команда git log --oneline --graph --decorate --all показывает историю всех веток компактно, в виде дерева. Чтобы найти нужный коммит, добавьте фильтры: --author, --since, --grep, -S или укажите путь к файлу после --.

Компактный вывод

Bash
git log --oneline                         # один коммит в одной строке
git log --oneline --graph --decorate --all   # дерево всех веток и меток
git log -5 --oneline                      # только последние пять коммитов

Сделайте это короткой командой, добавив псевдоним:

Bash
git config --global alias.lg "log --oneline --graph --decorate --all"
git lg

Фильтры

Что найти

Команда

Коммиты автора

git log --author="Иван"

Коммиты за период

git log --since="2 weeks ago" --until="yesterday"

Сообщение содержит слово

git log --grep="исправление" -i

Менялось число вхождений строки

git log -S"calculateTotal"

История одного файла

git log -- src/app.js

Без merge-коммитов

git log --no-merges

Коммиты, которые есть в ветке, но нет в main

git log main..feature/login

Флаг -i делает поиск --grep нечувствительным к регистру. Фильтры можно комбинировать: git log --author="Иван" --since="1 month ago" --grep="fix".

Что изменилось в коммитах

Bash
git log --stat -3          # файлы и число изменённых строк
git log --name-only -3     # только имена файлов
git log -p -1              # полный diff последнего коммита
git log -p -- src/app.js   # изменения одного файла по коммитам

Свой формат строки

Bash
git log --pretty=format:"%h %an %ad %s" --date=short

Код

Значение

%h

Короткий хеш

%an

Имя автора

%ad

Дата автора (формат задаёт --date)

%s

Заголовок коммита

%d

Ветки и метки, указывающие на коммит

Найти, когда пропала строка

Bash
git log -S"oldFunction" --oneline -- src/    # коммиты, где добавили или убрали слово
git log -G"old[A-Z]\w+" --oneline            # то же по регулярному выражению

Частые вопросы

Как выйти из просмотра git log?

Нажмите q. Вывод открывается в постраничном просмотрщике. Отключить его можно через git --no-pager log или git config --global core.pager cat.

Чем отличаются -S и --grep?

--grep ищет слово в сообщении коммита. -S ищет в самих изменениях: показывает коммиты, которые добавили или убрали указанную строку в коде.