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/Ежедневная работа/status

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

git status

Показывает разницу между тремя зонами Git: что изменено в рабочем дереве, что застейджено в индексе, какая ветка активна. Самая безвредная команда - ничего не меняет, можно жать сколько хочешь.

view as markdownaka: git-status

git status - твоё «где я» в Git. Без неё работа сводится к гаданию. Запускать каждый раз перед add и commit, и после переключения ветки.

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

Несколько разделов сверху вниз:

  1. Текущая ветка и её положение относительно remote: On branch main, Your branch is ahead of 'origin/main' by 2 commits.
  2. Changes to be committed - то, что в индексе и пойдёт в следующий коммит (зелёный цвет).
  3. Changes not staged for commit - изменённые отслеживаемые файлы, которые ещё не в индексе (красный).
  4. Untracked files - новые файлы, которые Git не отслеживает (красный).

Каждый раздел подсказывает следующую команду: «use git add to stage», «use git restore to discard».

Короткий формат

Подробный вывод полезен новичку. Для повседневной работы быстрее читается -s (short):

bash
git status -s
# M  README.md     ← застейджено: modified
# MM src/api.ts    ← застейджено и ещё раз изменено
#  M src/index.ts  ← модифицировано, но не застейджено
# ?? newfile.txt   ← untracked
# A  added.ts      ← новый, застейджен
# D  deleted.ts    ← удалён, застейджен

Два символа: левый - состояние в индексе, правый - в рабочем дереве. Понимая эти символы, читаешь статус мгновенно.

Branch + ahead/behind

git status -sb добавляет в верх строку с веткой и отставанием от remote:

## main...origin/main [ahead 2, behind 1]

Это значит: у тебя 2 локальных коммита, которых нет в origin, и в origin есть 1 коммит, которого нет у тебя. Нужно либо merge либо rebase, прежде чем push.

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

  • На больших репозиториях status может работать медленно. Если тормозит - git update-index --refresh или включить feature.manyFiles/core.fsmonitor в конфиге.
    • git status не показывает stash. Чтобы увидеть припрятанное - git stash list.
    • Если файл в .gitignore - status про него молчит. Чтобы проверить, почему файл игнорируется - git check-ignore -v file.

§ команды

bash
git status

Полный человекочитаемый отчёт

bash
git status -s

Короткий машиночитаемый формат, две колонки символов

bash
git status -sb

Короткий + строка с веткой и отставанием от remote

bash
git status --porcelain=v1

Зафиксированный формат для скриптов

§ см. также

  • addgit addКоманда переносит изменения файлов из рабочего дерева в индекс (staging area). Сама ничего не коммитит - только готовит, что попадёт в следующий коммит.
  • commit-cmdgit commitФиксирует то, что лежит в индексе, как новый коммит-объект и передвигает текущую ветку на этот коммит. Без аргументов открывает редактор для сообщения; чаще всего вызывают с `-m`.
  • loggit logОбходит граф коммитов и печатает каждый. По умолчанию начинает с HEAD и идёт по родителям. Десяток флагов покрывает 95% сценариев просмотра истории.
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки