git add to komenda, którą mówisz Gitowi: „te zmiany chcę uwzględnić w najbliższym commicie”. Edytując pliki w katalogu roboczym, nie zmieniasz jeszcze historii repozytorium — najpierw musisz przenieść konkretne modyfikacje do poczekalni (staging area, czyli indeks). Dopiero stamtąd git commit bierze materiał na nową wersję. Dzięki temu możesz commitować wybiórczo: w jednym pliku zmieniłeś dwie różne rzeczy, a do commita chcesz wrzucić tylko jedną. git add jest tym filtrem między „bałaganem na biurku” a „czystym wpisem w historii”.
Składnia i najważniejsze opcje
Podstawowa forma: git add [opcje] [<ścieżka>...]
<ścieżka>— dodaje konkretny plik lub katalog, np.git add src/wciąga wszystko poniżej.-A,--all— dodaje wszystkie zmiany w repo: nowe, zmodyfikowane i usunięte pliki.-u,--update— staguje modyfikacje i usunięcia plików już śledzonych, ale pomija nowe, nieśledzone pliki.-p,--patch— tryb interaktywny: Git pyta o każdy fragment (hunk) z osobna, więc dodajesz część zmian z pliku.-n,--dry-run— nic nie staguje, tylko pokazuje, co zostałoby dodane. Bezpieczny podgląd.-f,--force— dodaje pliki normalnie ignorowane przez.gitignore.-N,--intent-to-add— rejestruje sam zamiar dodania pliku (pusty wpis), żeby pokazał się wgit diff.-i,--interactive— pełne menu interaktywne do przeglądania i wybierania zmian.
Przykłady użycia
git add .— dodaje wszystkie zmiany z bieżącego katalogu w dół. Najczęstszy strzał na co dzień.git add -A— staguje całe repo, łącznie z plikami skasowanymi w dowolnym katalogu.git add index.html style.css— dodaje tylko dwa wskazane pliki, resztę zostawia w spokoju.git add -p— przechodzisz fragment po fragmencie i decydujeszy/n; idealne, gdy w jednym pliku siedzą dwie niezwiązane zmiany.git add -n .— sprawdzasz na sucho, co poleciałoby do poczekalni, zanim faktycznie to zrobisz.
Częste błędy i pułapki
git add robi snapshot stanu pliku w momencie wywołania. Jeśli po dodaniu jeszcze coś w nim zmienisz, te nowe zmiany nie trafią do commita, dopóki nie wywołasz git add ponownie — częsty moment „dlaczego mojej poprawki nie ma”.
Druga klasyczna pomyłka to mylenie -u z -A. -u ignoruje świeże, nieśledzone pliki, więc nowy plik po prostu nie wejdzie do commita, choć z pozoru „dodałeś wszystko”. Gdy chcesz naprawdę wszystko, łącznie z nowymi i usuniętymi — używaj -A.
Uważaj też na git add -f: wpychasz nim pliki, które .gitignore blokuje świadomie. Tak do repo trafiają sekrety, node_modules albo gigabajtowe buildy. Zanim wymusisz, zastanów się, czemu Git ten plik ignorował.
Powiązane komendy: git status (co jest w poczekalni), git restore --staged (cofnięcie dodania), git commit (zapis poczekalni do historii), git diff --staged (podgląd tego, co zacommitujesz).