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

Учимся читать «приборную панель» репозитория — команду, которую вы будете запускать чаще всех остальных.

Главная команда дня

Команда git status отвечает на вопрос «что у меня сейчас происходит?». Она показывает текущую ветку, какие файлы изменены, какие добавлены в индекс, а какие git вообще не отслеживает. Запускайте её постоянно — это нормально и правильно.

git status

Сразу после git init в пустой папке с одним новым файлом вывод будет таким:

Вывод:

On branch main

No commits yet

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

nothing added to commit but untracked files present

Читаем вывод по блокам

Git заботливо подсказывает, что делать дальше. Разберём типичные блоки:

  • On branch main — вы на ветке main.
  • Changes to be committed — это содержимое индекса (staged), попадёт в следующий коммит. Файлы обычно зелёные.
  • Changes not staged for commit — отслеживаемые файлы изменены, но ещё не в индексе. Обычно красные.
  • Untracked files — новые файлы, которые git не отслеживает.

Пример с изменениями

Допустим, один файл мы уже добавили в индекс, а второй только что отредактировали:

Вывод:

On branch main
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	modified:   app.py

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
	modified:   style.css

Видно сразу: app.py готов к коммиту, а изменения в style.css в коммит пока не войдут.

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

Когда привыкнете, пользуйтесь сжатым выводом:

git status -s

Вывод:

M  app.py
 M style.css
?? notes.txt

Два столбца слева — это состояние в индексе и в рабочей директории. M в левом столбце — изменение в индексе, во втором — в рабочей директории, ?? — untracked-файл.

Чистое дерево

Когда всё закоммичено, вы увидите заветную строку:

Вывод:

On branch main
nothing to commit, working tree clean

Почему status — лучший друг новичка

Опытные разработчики запускают git status буквально десятки раз в день, и это правильная привычка. Команда ничего не меняет — она только показывает текущее положение дел, поэтому абсолютно безопасна. Прежде чем делать git add, git commit, переключать ветку или сливать изменения, полезно глянуть status и убедиться, что вы понимаете, в каком состоянии репозиторий. Это спасает от десятков мелких ошибок: случайно закоммитить лишний файл, забыть добавить нужный, перепутать ветку.

Цвета в выводе

Если вы включили color.ui auto (мы делали это в уроке про настройку), git подсвечивает вывод: зелёным — то, что уже в индексе и попадёт в коммит, красным — изменённые, но ещё не добавленные файлы. Привыкнув к цветам, вы будете считывать состояние репозитория за секунду, даже не вчитываясь в текст.

Итог

  • git status — ваша приборная панель, запускайте её часто.
  • Различайте блоки: staged (в индексе), not staged (изменено, но не в индексе), untracked (новое).
  • git status -s даёт компактный двухстолбцовый вывод.
Проверьте себя
1. Что показывает раздел «Changes to be committed» в выводе git status?
AФайлы, которые git не отслеживает
BИзменения, добавленные в индекс и готовые войти в коммит
CИсторию последних коммитов
DФайлы на удалённом сервере
2. Что означает статус «Untracked files»?
AФайлы изменены, но не добавлены в индекс
BФайлы, которые git ещё не отслеживает (новые)
CФайлы, удалённые из репозитория
DФайлы с конфликтами слияния
3. Что выведет git status при полностью закоммиченном проекте?
Aerror: nothing to do
Bnothing to commit, working tree clean
Cfatal: not a git repository
DAll files untracked
Поддержать проект