git log: история проекта

Обновлено 31 июля 2026 г.

git log показывает историю репозитория: коммиты от самого свежего к самому старому, у каждого свой автор, дата и сообщение.

Команда только читает и ничего не меняет, так что запускать её можно сколько угодно. С неё начинают знакомство с чужим проектом, ею же ищут момент, в который что-то сломалось.

$ git log
commit d5e5bbe9321944e44494ac88ad12ab824f9db5a0 (HEAD -> main)
Author: Anna Petrova <anna@example.com>
Date:   Tue Mar 17 11:05:19 2026 +0300

    список покупок

commit ebccf34a6aec7995dd23300865ebb6ce73afec22
Author: Anna Petrova <anna@example.com>
Date:   Tue Mar 17 10:31:02 2026 +0300

    рецепт: молоко и порядок шагов

Верхний коммит - самый свежий по времени, под ним предыдущий, и так до первого. Сорок символов после слова commit - это хеш, уникальный идентификатор снимка; в командах хватает первых семи, git догадается сам. Пометка HEAD -> main показывает, где ты сейчас стоишь. Длинную историю git отдаёт постраничному просмотрщику: листай пробелом, выходи клавишей q.

Компактный вид и фильтры

--oneline сжимает каждый коммит до строки, и вся история влезает на экран:

$ git log --oneline
d5e5bbe (HEAD -> main) список покупок
ebccf34 рецепт: молоко и порядок шагов
438482b рецепт: первая версия

Дальше выборку сужают флагами, и они складываются друг с другом:

$ git log -n 5                       # только пять последних коммитов
$ git log --oneline --author=Anna    # где в имени или почте автора есть "Anna"
$ git log --since=2026-03-01         # начиная с этой даты
$ git log --since=2026-03-01 --until=2026-03-18
$ git log --oneline -- report.txt    # только коммиты, тронувшие этот файл

--graph дорисовывает слева схему ветвлений:

$ git log --oneline --graph
*   a816435 Merge branch 'intro'
|\
| * e78a55c отчёт: вступление
* | 4f548f6 покупки: добавил яйца
|/
* d5e5bbe список покупок

Звёздочка - коммит, вертикальные линии - ветки. Они расходятся там, где работа шла параллельно, и снова сходятся в коммите слияния.

Частые ошибки

Пустой вывод в свежем репозитории пугает зря: коммитов ещё нет, показывать нечего. --author ищет подстроку в имени и почте и различает регистр, поэтому --author=anna найдёт коммиты по адресу anna@example.com, а --author=ANNA не найдёт ничего. У --since формат свободный: годятся и --since=2026-03-01, и --since="2 weeks ago", а время считается по часовому поясу твоей машины. Если вывод занял экран и приглашение не вернулось - это просмотрщик, выход по q.

Где это в учебнике

Подробный разбор - Глава 3. Три зоны и первый коммит. Рядом пригодятся git diff и commit message.

Потренироваться руками - в интерактивном уроке Три зоны и коммит.