git status и git log

Инструменты для диагностики текущего состояния репозитория и просмотра истории коммитов.

Зачем нужно

git status показывает, что происходит прямо сейчас: какие файлы изменены, что добавлено в staging, есть ли untracked-файлы. git log отображает историю commit-ов: кто, когда и что изменял. Вместе эти команды дают полную картину состояния проекта и позволяют ориентироваться в истории изменений без визуальных инструментов.

Где используется

  • Проверка состояния перед каждым git add и git commit
  • Поиск автора и времени конкретного изменения
  • Просмотр истории ветки перед merge или rebase
  • Диагностика после конфликтов и ошибочных операций

Основной контент

git status

# Полный статус
git status

# Короткий формат (s = short)
git status -s
# M  src/app.js    ← изменён и добавлен в staging
#  M src/utils.js  ← изменён, но не в staging
# ?? config.local  ← untracked
# A  newfile.js    ← новый файл в staging

# Статус с информацией о ветке
git status -sb

git log

# Полный лог с автором, датой, сообщением
git log

# Один commit на строку
git log --oneline

# Граф веток и слияний
git log --oneline --graph --all

# Только последние N коммитов
git log -5

# История конкретного файла
git log -- src/app.js

# Поиск по сообщению
git log --grep="auth"

# Поиск по автору
git log --author="Ivan"

# Поиск по дате
git log --since="2026-01-01" --until="2026-04-01"

# Показать что изменилось в каждом commit (patch)
git log -p

# Статистика изменений без деталей
git log --stat

# Собственный формат
git log --format="%h %ad %s" --date=short

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

# Красивый граф — добавить в ~/.gitconfig
git config --global alias.lg "log --oneline --graph --all --decorate"

# Использование
git lg

Пример вывода git log --oneline --graph

* a1b2c3d (HEAD -> main) feat: добавить пагинацию
* e4f5g6h fix: исправить ошибку 404 на /users
*   i7j8k9l Merge branch 'feature/auth'
|\
| * m0n1o2p feat(auth): добавить JWT
| * q3r4s5t feat(auth): настроить маршруты
|/
* u6v7w8x chore: обновить зависимости

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

  • Не проверять git status перед commit — случайные файлы попадут в индекс
  • git log без флагов на большом проекте — выводит тысячи commit-ов; всегда используй -N или --oneline
  • Путать modified и staged — в git status -s левая колонка — staging, правая — рабочая директория
  • Не использовать --graph — история с merge-ами выглядит линейно и вводит в заблуждение

Связанные темы

Ресурсы