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 porzuconenode_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).