← Назад к вопросам

Как посмотреть историю коммитов

1.0 Junior🔥 151 комментариев
#Soft Skills и карьера

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Как посмотреть историю коммитов в Git

История коммитов — это запись всех изменений, внесённых в проект. Просмотр истории критичен для отладки, код-ревью и понимания эволюции проекта.

Основная команда: git log

# Базовый просмотр истории
git log

# Вывод примерно такой:
commit 3a4c5f7a8b9c1d2e3f4a5b6c7d8e9f0a1b2c3d4e
Author: John Doe <john@example.com>
Date:   Wed Mar 22 10:30:45 2026 +0300

    Fixed bug in payment processing

commit 2f1a8b7c6d5e4c3b2a1f9e8d7c6b5a4f3e2d1c0b
Author: Jane Smith <jane@example.com>
Date:   Tue Mar 21 14:22:15 2026 +0300

    Added user authentication

Форматированные версии

Компактный формат (одна строка на коммит):

git log --oneline

# Вывод:
3a4c5f7 Fixed bug in payment processing
2f1a8b7 Added user authentication
5c4d3e2 Updated dependencies

С информацией об авторе:

git log --oneline --author="John"
# Показывает только коммиты John

git log --oneline --author="John" --author="Jane"
# Коммиты John или Jane

Декоративный формат (красивый вывод):

git log --graph --oneline --all --decorate

# Вывод с веточками:
* 3a4c5f7 (HEAD -> main) Fixed bug in payment processing
* 2f1a8b7 Added user authentication
|\  
| * 5c4d3e2 (develop) New feature
|/   
* 1a2b3c4 Initial commit

Фильтрация по дате

# За последние N дней
git log --since="2 days ago"

# За конкретный период
git log --since="2026-03-01" --until="2026-03-22"

# За последние N коммитов
git log -n 5  # Последние 5 коммитов
git log -10   # Последние 10 коммитов

Фильтрация по файлам

# История изменений конкретного файла
git log -- src/main/java/User.java

# История с показом изменений в файле
git log -p -- src/main/java/User.java

# История конкретной функции
git log -p -S "methodName" -- src/main/java/User.java

# Файлы, которые были изменены
git log --name-status

# Статистика: сколько строк изменено
git log --stat

Поиск в истории

По сообщению коммита:

# Поиск по тексту сообщения
git log --grep="bug fix"

# Case-insensitive поиск
git log --grep="Bug Fix" -i

# Поиск по регулярному выражению
git log --grep="^fix:" # Коммиты, начинающиеся на "fix:"

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

# Поиск коммитов, где была добавлена строка
git log -S "password" -- .
# Найдёт коммиты, где добавилось или удалилось слово "password"

# Поиск с регулярным выражением в diff
git log -G "private.*password"

Детальный просмотр

Показать изменения в каждом коммите:

# Patch формат (diff для каждого коммита)
git log -p

# То же самое для конкретного файла
git log -p -- src/main/java/User.java

# Последние N коммитов с изменениями
git log -p -5

Просмотр конкретного коммита:

# Полная информация о коммите
git show 3a4c5f7

# Изменения в конкретном файле
git show 3a4c5f7:src/main/java/User.java

# Что изменилось между двумя коммитами
git diff 2f1a8b7..3a4c5f7

Просмотр веток и мержей

# История с визуализацией веток
git log --graph --oneline --all

# Красивый формат
git log --graph --oneline --all --decorate --author-date-order

# Только мержи
git log --merges

# Только non-merges коммиты
git log --no-merges

Аналитика истории

Статистика по авторам:

# Количество коммитов по авторам
git shortlog -s -n
# Вывод:
    25  John Doe
    18  Jane Smith
    12  Bob Johnson

# С email
git shortlog -s -n -e

Дата первого и последнего коммита:

# Первый коммит
git log --reverse --oneline | head -1

# Последний коммит
git log --oneline | head -1

Практические примеры

Найти, кто удалил функцию:

# Ищем коммиты, где функция исчезла
git log -S "public void doSomething()" -- src/main/java/

Найти, когда была добавлена ошибка:

# Используем git bisect для бинарного поиска
git bisect start
git bisect bad HEAD  # Текущий коммит плохой
git bisect good v1.0.0  # Версия 1.0.0 хорошая

# Git будет предлагать коммиты для проверки

Просмотр истории для code review:

# Коммиты в ветке, не в main
git log main..feature-branch --oneline

# С показом изменений
git log -p main..feature-branch

# Статистика
git log --stat main..feature-branch

Полезные алиасы

Добавь в ~/.gitconfig:

[alias]
    lg = log --graph --oneline --all --decorate
    ll = log --oneline -10
    lp = log -p
    authors = shortlog -s -n -e
    today = log --since="midnight" --oneline

Тогда можно писать просто:

git lg       # Красивая история
git ll       # Последние 10
git authors  # Статистика авторов

Best practices

  1. Читаемые сообщения коммитов — помогают при поиске в истории
  2. Логичные группировки коммитов — не смешивай разные фичи
  3. Squash мелкие коммиты перед мержем — история будет чище
  4. Используй tags для версий — git log --decorate покажет их

История коммитов — это документация кода, которую всегда нужно поддерживать в чистоте.