git status: что сейчас происходит в репозитории

Обновлено 31 июля 2026 г.

git status отвечает на вопрос «где я и что у меня лежит»: на какой ты ветке, какие файлы изменены и что уже отобрано в следующий коммит.

Команда ничего не меняет, поэтому запускать её можно сколько угодно. Опытные люди набирают её десятки раз в день, между каждыми двумя другими командами.

$ git status
On branch main
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	new file:   steps.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   recipe.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	shopping.txt

Три раздела вывода

Untracked files - неотслеживаемые файлы. Git их видит, но истории по ним не ведёт и в снимки не берёт, пока не скажешь иначе.

Changes not staged for commit - файл уже под присмотром git и изменился с последнего коммита, но в следующий снимок эти правки пока не попадут.

Changes to be committed - то, что отобрано в индекс (staging area) командой git add. Именно это содержимое сохранит следующий git commit.

Один и тот же файл может стоять сразу в двух разделах: часть правок отобрана, а сделанные после git add - ещё нет.

Читай подсказки в скобках. Git печатает там ровно ту команду, которая отменяет или продолжает текущий шаг, и это избавляет от поиска по интернету.

Когда всё сохранено, вывод короткий:

$ git status
On branch main
nothing to commit, working tree clean

Короткая форма

git status -s умещает то же самое в одну строку на файл:

$ git status -s
 M recipe.txt
A  steps.txt
?? shopping.txt
AM note.txt

Колонки две. Первая - состояние в индексе, вторая - в рабочем каталоге. M значит modified, A - добавлен новый файл, ?? - неотслеживаемый. Строка AM читается так: файл добавлен в индекс, а потом изменён и с тех пор не переотобран. Флаг -sb дописывает сверху строку с именем ветки.

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

Changes not staged for commit - не ошибка и не предупреждение. Это обычное состояние работы: ты правишь файлы, git об этом сообщает.

Второе место, где спотыкаются, - решить, что git status показывает разницу в строках. Он показывает только список файлов и их состояние. Построчную разницу печатает git diff.

Где это в учебнике

Тема разобрана здесь: Глава 3. Три зоны и первый коммит.

Потренироваться руками - в интерактивном уроке Первый репозиторий.