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-ами выглядит линейно и вводит в заблуждение