W3docs

git log

Информация о команде git log: её применение, основные параметры и примеры с пояснениями.

gitlog

Команда git log — это ваше окно в историю проекта. Она выводит список коммитов, зафиксированных в репозитории, начиная с самых новых, и предоставляет богатый набор параметров для фильтрации, поиска и форматирования этой истории. На данной странице объясняется, что показывает git log, как читать его вывод по умолчанию, какие параметры используются чаще всего и как их комбинировать, чтобы ответить на реальные вопросы: «кто изменил этот файл?» или «что появилось между двумя релизами?»

Что показывает git log

git log отображает зафиксированные снимки репозитория — постоянную историю, сохранённую Git. Это важное различие: git log никогда не показывает незафиксированные изменения. Чтобы проверить рабочий каталог и индекс, используйте git status; чтобы увидеть построчные изменения, которые ещё не зафиксированы, используйте git diff.

Запущенная без аргументов, команда проходит в обратном направлении от текущего коммита (HEAD) через каждого родителя:

git log

Типичная запись выглядит следующим образом:

commit 1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b (HEAD -> master)
Author: Bob Smith <[email protected]>
Date:   Mon Jun 16 10:24:31 2026 +0400

    Add login form validation

Каждый коммит содержит 40-символьный SHA-1 хеш, имя автора, дату и сообщение коммита. По умолчанию вывод постранично: нажмите Space для прокрутки, q для выхода. Коммиты показаны в обратном хронологическом порядке.

Часто используемые параметры

Вывод лога можно настраивать по-разному: фильтровать отображаемые коммиты или выводить их в произвольном формате. Вот наиболее востребованные параметры:

КомандаОписание
git logОтображает полную историю коммитов в формате по умолчанию. Используйте Space для прокрутки и q для выхода, если вывод занимает несколько экранов.
git log -n <limit>Ограничивает количество коммитов. Например, git log -n 2 отображает только 2 последних коммита.
git log --onelineСжимает каждый коммит до одной строки (короткий хеш + краткое описание) — идеально для быстрого обзора.
git log --statДобавляет список изменённых файлов, а также количество добавленных и удалённых строк для каждого коммита.
git log -pПоказывает полный патч (diff) для каждого коммита.
git log --author="<pattern>"Фильтрует коммиты по конкретному автору. <pattern> может быть обычной строкой или регулярным выражением.
git log --grep="<pattern>"Фильтрует коммиты, сообщение которых соответствует <pattern> (строка или регулярное выражение).
git log <since>..<until>Показывает только коммиты, достижимые из <until>, но не из <since>. Каждая сторона может быть идентификатором коммита, именем ветки, тегом, HEAD или любой другой ссылкой на ревизию.
git log <file>Показывает только коммиты, затронувшие указанный файл, — его историю изменений.
git log --graph --decorate --onelineРисует текстовый граф структуры веток/слияний, отмечает ветки и теги, печатает по одной строке на коммит.
git log --since="<date>"Показывает коммиты новее указанной даты (например "2 weeks ago" или "2026-01-01").
git log --until="<date>"Показывает коммиты старше указанной даты.
git log --allПоказывает коммиты из всех веток и ссылок, а не только из текущей ветки.

Компактный обзор

Для быстрого просмотра истории --oneline незаменим. В сочетании с --graph и --decorate лог превращается в наглядную карту ваших веток:

git log --graph --decorate --oneline
* 1a2b3c4 (HEAD -> master) Add login form validation
* 9f8e7d6 Fix typo in README
| * 4c5d6e7 (feature) Start checkout flow
|/
* 0a1b2c3 Initial commit

Звёздочки и соединительные линии показывают, как ветки расходились и сливались; (HEAD -> master) и (feature) — это метки, добавляемые флагом --decorate.

Фильтрация истории

Настоящая мощь git log заключается в сужении тысяч коммитов до тех, которые вас интересуют.

По автору и содержимому

Чтобы найти все изменения конкретного автора в одном файле, комбинируйте --author, -p и путь к файлу:

git log --author="Bob Smith" -p w3docs.txt

Это покажет полный diff всех изменений, которые Bob внёс в w3docs.txt. Чтобы искать по сообщениям коммитов, а не по авторам, используйте --grep:

git log --grep="bugfix"

По дате

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

--since и --until принимают абсолютные даты (2026-01-01) или понятные человеку относительные выражения ("3 days ago", "last Monday").

Между двумя ссылками

Синтаксис <since>..<until> (двойная точка) отвечает на вопрос «что есть в B, чего нет в A?» — идеально для сравнения веток перед слиянием:

git log --oneline master..some-feature

Это выводит все коммиты на some-feature, которые ещё не попали в master. Поменяйте стороны местами, чтобы увидеть обратное. Поскольку теги тоже работают как ссылки на ревизии, тот же синтаксис отлично подходит для заметок о релизах:

git log --oneline v1.0..v2.0

Просмотр истории отдельного файла

Когда нужно понять, как эволюционировал один файл, передайте его путь:

git log --oneline -- src/app.js

Разделитель -- сообщает Git, что всё после него является путём, что устраняет неоднозначность, когда файл и ветка имеют одинаковое имя. Чтобы увидеть фактические изменения вместе с историей, добавьте -p. Если нужно узнать, кто последним касался каждой строки, используйте git blame. Чтобы просмотреть полное содержимое одного конкретного коммита, воспользуйтесь git show.

Распространённые ошибки

  • git log показывает только зафиксированную историю. Отложенные, проиндексированные или несохранённые изменения не отобразятся — для этого смотрите git status и git stash.
  • По умолчанию показывается только текущая ветка. Добавьте --all, чтобы включить все ветки, или явно укажите имя ветки/ссылки.
  • Потерянные коммиты зачастую можно восстановить. Даже коммиты, на которые не указывает ни одна ветка, могут быть доступны через git reflog.
  • A..B не симметрично. master..feature и feature..master возвращают разные коммиты; порядок имеет значение.

Практика

Практика
What are the functionalities and options of the 'git log' command?
What are the functionalities and options of the 'git log' command?
Was this page helpful?