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. Три зоны и первый коммит.
Потренироваться руками - в интерактивном уроке Первый репозиторий.