git clean

Usuwa nieśledzone pliki i katalogi z drzewa roboczego.

git clean usuwa z drzewa roboczego pliki nieśledzone (untracked) — czyli takie, których Git nie zna, bo nigdy ich nie dodałeś przez git add i nie ma ich w żadnym commicie. Przydaje się, gdy katalog projektu zaśmieci się artefaktami budowania, plikami tymczasowymi, logami czy pozostałościami po eksperymentach, a Ty chcesz wrócić do czystego stanu repozytorium bez ręcznego klikania. Uwaga z góry: te pliki znikają na amen, Git ich nie wersjonuje, więc nie odzyskasz ich z historii.

Składnia i najważniejsze opcje

Podstawowa postać: git clean [-n] [-f] [-d] [-x]

  • -n (lub --dry-run) — pokazuje, co zostałoby usunięte, ale niczego nie kasuje. Zawsze zaczynaj od tego.
  • -f (lub --force) — faktycznie usuwa pliki. Bez niego (i bez odpowiedniej konfiguracji) Git odmówi działania.
  • -d — obejmuje też nieśledzone katalogi, nie tylko pojedyncze pliki.
  • -x — usuwa również pliki ignorowane przez .gitignore (np. node_modules, build). Mała litera, duża różnica.
  • -X — usuwa wyłącznie pliki ignorowane, a nieśledzone zostawia w spokoju.
  • -i (lub --interactive) — tryb interaktywny: przechodzisz przez pliki i decydujesz, co leci.
  • -e (lub --exclude) — dodatkowy wzorzec wykluczający, żeby ochronić wybrane pliki.

Przykłady użycia

  • git clean -n — podgląd: lista nieśledzonych plików do usunięcia, zero zniszczeń.
  • git clean -nd — to samo, ale uwzględnia też nieśledzone katalogi.
  • git clean -fd — realne usunięcie nieśledzonych plików i katalogów.
  • git clean -fdx — sprzątanie totalne, łącznie z plikami z .gitignore (świetne na porzucone node_modules, ryzykowne na pliki .env).
  • git clean -i — tryb interaktywny, gdy chcesz mieć kontrolę nad każdym plikiem.

Częste błędy i pułapki

Najczęstsza wpadka to odruchowe git clean -fdx w panice. Flaga -x kasuje też pliki ignorowane, a tam często ląduje lokalny .env z hasłami albo cache, którego nie chcesz tracić. Zawsze najpierw git clean -ndx i przeczytaj listę.

Druga sprawa: domyślnie Git może odmówić uruchomienia bez -f, jeśli zmienna clean.requireForce jest ustawiona na true (zwykle jest). To celowy bezpiecznik, nie błąd. Pamiętaj też, że git clean nie rusza plików śledzonych ani zmian w stage — do cofania zmian w wersjonowanych plikach służy co innego.

Pułapka na początkujących: git clean bez -d zostawia całe nieśledzone katalogi nietknięte, więc jeśli „nic się nie usunęło”, prawdopodobnie brakuje Ci tej flagi.

Powiązane komendy: git status (zobacz, co jest nieśledzone), git reset i git restore (cofanie zmian w plikach śledzonych), git stash (schowanie zmian), .gitignore (sterowanie tym, co Git ignoruje).