linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
Intro
Lessons
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Главы
  • How it works
  • Уроки
  • База знаний
  • Собеседование
home/git/kb/Ежедневная работа/log

kb/workflow ── Ежедневная работа ── beginner

git log

Обходит граф коммитов и печатает каждый. По умолчанию начинает с HEAD и идёт по родителям. Десяток флагов покрывает 95% сценариев просмотра истории.

view as markdownaka: git-log

git log - главная команда для чтения истории. Технически она делает обход графа коммитов через git rev-list и для каждого коммита печатает его описание через git cat-file.

Базовый вызов

bash
git log

Печатает каждый коммит: SHA, автор, дата, сообщение. По умолчанию с пейджером (less), q для выхода.

Самые полезные формы

bash
git log --oneline                # одна строка на коммит
git log --oneline -10            # последние 10
git log --oneline --graph --all  # дерево всех веток
git log --stat                   # + сводка изменённых файлов
git log -p                       # + полный diff каждого коммита
git log --follow file.txt        # история одного файла, с учётом переименований

Самая нужная форма для повседневного просмотра - --oneline --graph --all --decorate. Многие настраивают её как алиас:

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

Фильтры

bash
git log --since="2 weeks ago"
git log --until=2026-01-01
git log --author=Linus
git log --grep="fix.*memory"      # regex по сообщениям
git log -S "deprecated"           # коммиты, где появилось/исчезло это слово
git log -- src/api.ts             # только коммиты, трогавшие путь
git log main..feature             # коммиты в feature, которых нет в main

-S (pickaxe) - особенно мощный фильтр для поиска «когда удалили эту функцию», «когда впервые появилось это поле».

Форматы вывода

bash
git log --pretty=format:"%h %an %s"   # короткий SHA, автор, тема
git log --pretty=fuller                # обе даты - author и committer
git log --format=%H -n 1               # только полный SHA последнего

Формат --pretty=fuller особенно полезен после rebase, чтобы увидеть расхождение author-date и committer-date.

Подводные камни

  • git log file.txt без --follow теряет историю при переименовании.
  • git log --graph для большой истории может стать нечитаемым - в этом случае фильтруй по ветке или по пути.
  • В сценариях для скриптов вместо git log лучше использовать git rev-list (plumbing) - стабильный формат.

§ команды

bash
git log --oneline --graph --all

Дерево коммитов всех веток, по строчке

bash
git log -p -- file.txt

История одного файла со всеми diff'ами

bash
git log main..feature

Коммиты в feature, которых ещё нет в main

bash
git log -S 'deprecated'

Найти коммит, где слово впервые появилось или исчезло

§ см. также

  • statusgit statusПоказывает разницу между тремя зонами Git: что изменено в рабочем дереве, что застейджено в индексе, какая ветка активна. Самая безвредная команда - ничего не меняет, можно жать сколько хочешь.
  • commit-cmdgit commitФиксирует то, что лежит в индексе, как новый коммит-объект и передвигает текущую ветку на этот коммит. Без аргументов открывает редактор для сообщения; чаще всего вызывают с `-m`.
  • rev-parsegit rev-parsePlumbing-команда, которая переводит человекочитаемые имена ссылок (HEAD, main~2, v1.0, :/typo) в полные SHA. Используется всеми porcelain-командами под капотом и удобна в скриптах.
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки