Как посмотреть, что изменилось в файлах перед коммитом (diff и status)?
Перед коммитом хочу проверить, что именно я наменял. Какие файлы тронуты и что конкретно поменялось внутри. В чём разница между git status и git diff?
2 ответа
Это две разные, но дополняющие друг друга команды.
git status показывает список файлов: что изменено, что добавлено в индекс, что вообще новое (untracked). Это «карта» состояния:
git status
git diff показывает построчно, что именно поменялось внутри файлов — что удалено (строки с -), что добавлено (строки с +):
git diff
Важный нюанс: git diff по умолчанию показывает только не staged изменения. Если ты уже сделал git add, чтобы увидеть, что лежит в индексе, нужен флаг:
git diff --staged
(или --cached — то же самое).
Порядок работы обычно такой: git status (что тронуто) → git diff (что конкретно) → git add → git diff --staged (перепроверить, что коммитишь) → git commit.
Частая ошибка: сделать git add ., потом git diff и удивиться, что он пустой. Так и должно быть: после add изменения ушли в индекс, и для них теперь работает git diff --staged. Пустой git diff означает «незастейдженных правок больше нет», а не «изменений нет вообще».
Короткая шпаргалка:
git status— какие файлы изменены (общая картина).git diff— что изменилось в неиндексированных файлах.git diff --staged— что изменилось в том, что уже добавлено черезadd.git diff main feature— разница между двумя ветками.
Для выхода из длинного diff (он открывается в пейджере) жми q.