git status - твоё «где я» в Git. Без неё работа сводится к гаданию.
Запускать каждый раз перед add и commit, и после переключения
ветки.
Что показывает
Несколько разделов сверху вниз:
- Текущая ветка и её положение относительно remote:
On branch main,Your branch is ahead of 'origin/main' by 2 commits. - Changes to be committed - то, что в индексе и пойдёт в следующий коммит (зелёный цвет).
- Changes not staged for commit - изменённые отслеживаемые файлы, которые ещё не в индексе (красный).
- Untracked files - новые файлы, которые Git не отслеживает (красный).
Каждый раздел подсказывает следующую команду: «use git add to
stage», «use git restore to discard».
Короткий формат
Подробный вывод полезен новичку. Для повседневной работы быстрее
читается -s (short):
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.