Git log: красивый вывод, поиск по автору, дате и тексту
Команда git log --oneline --graph --decorate --all показывает историю всех веток компактно, в виде дерева. Чтобы найти нужный коммит, добавьте фильтры: --author, --since, --grep, -S или укажите путь к файлу после --.
Компактный вывод
git log --oneline # один коммит в одной строке
git log --oneline --graph --decorate --all # дерево всех веток и меток
git log -5 --oneline # только последние пять коммитовСделайте это короткой командой, добавив псевдоним:
git config --global alias.lg "log --oneline --graph --decorate --all"
git lgФильтры
Что найти | Команда |
|---|---|
Коммиты автора |
|
Коммиты за период |
|
Сообщение содержит слово |
|
Менялось число вхождений строки |
|
История одного файла |
|
Без merge-коммитов |
|
Коммиты, которые есть в ветке, но нет в main |
|
Флаг -i делает поиск --grep нечувствительным к регистру. Фильтры можно комбинировать: git log --author="Иван" --since="1 month ago" --grep="fix".
Что изменилось в коммитах
git log --stat -3 # файлы и число изменённых строк
git log --name-only -3 # только имена файлов
git log -p -1 # полный diff последнего коммита
git log -p -- src/app.js # изменения одного файла по коммитамСвой формат строки
git log --pretty=format:"%h %an %ad %s" --date=shortКод | Значение |
|---|---|
| Короткий хеш |
| Имя автора |
| Дата автора (формат задаёт |
| Заголовок коммита |
| Ветки и метки, указывающие на коммит |
Найти, когда пропала строка
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 ищет в самих изменениях: показывает коммиты, которые добавили или убрали указанную строку в коде.