git status показує стан файлів відносно індексу й останнього коміту:
On branch main
Changes to be committed: ← в індексі, піде в коміт
modified: app/Models/User.php
Changes not staged for commit: ← змінено, але не додано
modified: routes/web.php
Untracked files: ← нові, Git їх ще не відстежує
app/Actions/SendInvite.php
Компактний формат зручніший для щоденної роботи:
git status -sb
# ## main...origin/main [ahead 1]
# M app/Models/User.php ← ліва колонка: індекс
# M routes/web.php ← права колонка: робочий каталог
# MM config/app.php ← змінено і в індексі, і після нього
# ?? app/Actions/SendInvite.php
Три порівняння git diff:
| Команда | Що з чим порівнює |
|---|---|
git diff |
робочий каталог з індексом - те, що ще не додано |
git diff --staged (--cached) |
індекс з останнім комітом - що піде в коміт |
git diff HEAD |
робочий каталог з останнім комітом - усі зміни разом |
Типова плутанина: після git add команда git diff «нічого не показує». Зміни нікуди не зникли - вони в індексі, і їх видно через git diff --staged.
Корисні варіанти:
git diff --stat # лише список файлів і кількість рядків
git diff --word-diff # зміни по словах - зручно для тексту й документації
git diff main..feature -- app/ # між гілками, лише каталог app
git diff -w # ігнорувати зміни пробілів
Перед кожним комітом корисна звичка - переглянути git diff --staged: саме цей вивід побачать рецензенти.