git add

Dodaje zmiany z plików do poczekalni (staging area) przed commitem.

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ę w git 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 decydujesz y/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).