Jak szybko zrobić porządek w projekcie – polecenie git clean

Opublikowane przez Tomasz Prasołek w dniu

Czasem zdarza mi się, że dodam do projektu jakiś plik i zanim wrzucę go do repozytorium, to on jednak okazuje się niepotrzebny. Do tej pory usuwałem ten plik ręcznie, albo w Eksploratorze Windows albo wpisując komendę:

rm <ścieżka do pliku>

gdzie z racji tego, że projekt jest spory, to ścieżka do pliku zawiera w sobie kilka folderów. Jest jednak lepsze rozwiązanie.

Git clean

Na szczęście w gicie można szybciej zrobić porządek. Z pomocą przychodzi polecenie:

git clean

Polecenie to usuwa wszystkie nieśledzone pliki (untracked files).

Przykład:
Dodałem do mojego testowego repozytorium plik untrack_file.txt.

Aby go usunąć wpisuję polecenie git clean i…

Dostajemy błąd. Domyślne, aby polecenie zadziałało trzeba użyć jeszcze opcji -f (force) lub zmienić wartość ustawienia requireForce w konfiguracji. Jest to zabezpieczenie, aby przypadkiem nie usunąć plików. Wywołanie tego polecenia jest nie odwracalne, pliki zostaną usunięte tak samo jakbyśmy użyli polecenia rm.

Wpisujemy git clean -f i już.

Domyślnie polecenie nie usunie pustych katalogów, więc trzeba jeszcze dołożyć opcję -d:

git clean -df

Polecenie to ma jeszcze kilka przydatnych opcji:

git clean -f -n
git clean -f --dry-run

Te dwie opcją oznaczają to samo. Powoduje uruchomienie polecenia “na sucho”. Pokaże Nam pliki, które zostałyby usunięte, jeśli byśmy wykonali polecenie bez tej opcji.

Kolejna przydatna opcja to:

git clean -xdf

Opcja -x oznacza, aby usunął wszystkie nieśledzone pliki, włącznie z tymi ignorowanymi przez .gitignore. Jest to przydatne, jak chcemy przywrócić projekt do stanu jakbyśmy dopiero go sklonowali. Bez żadnych plików konfiguracyjnych IDE, bez żadnych artefaktów powstałych w czasie uruchamia projektu itd.

Interaktywne usuwanie

Do tej pory usuwaliśmy wszystko albo nic. Jednak jest opcja, aby usunąć tylko wybrane pliki: -i.

git clean -dfi

Opcja ta włącza tryb interaktywny.

Dla testów dodałem do swojego przykładowego repozytorium 2 pliki oraz 2 katalogi:

some new file.txt
empty_folder
not_empty_folder\some other new file.txt

Po wykonaniu tego polecenia pokazuje Nam się menu z kilkoma opcjami do wyboru:

Na początku jest napisane jakie pliki mogą zostać usunięte. Następnie mamy 6 opcji do wyboru:

1: clean

Usunie wszystkie pliki wypisane wyżej.

2: filter by pattern

Po wybraniu tej opcji pokaże Nam się lista plików możliwych do usunięcia oraz miejsce do wpisania wzoru, których plików nie usuwać. Jako wildcard służy *.

Jeśli nie chcemy usuwać plików lub folderów zaczynających się od słowa git to wpisujemy git* i naciskamy ENTER. Dostajemy listę plików nie pasujących do wzoru.

Możemy wpisać kolejny wzór, dzięki temu możemy oznaczyć zestaw plików, których nie chcemy usunąć. Wyjściem z tej opcji jest naciśnięcie klawisza ENTER, co spowoduje powrót do menu głównego, jednak od razu nie usunie plików. Trzeba wybrać opcję clean, która usunie pliki nie pasujące do naszego wcześniej wpisanego wzoru.

3: select by numbers

Pozwala wybrać co chcemy usunąć wpisując numery plików.

Każdy plik/katalog ma przypisany odpowiedni numer. Można wpisać więcej numerów oddzielonych przecinkiem. Po naciśnięciu ENTER, wybrane przez Nas pliki zostają oznaczone gwiazdką (*). Kolejne naciśnięcie przycisku ENTER powoduje powrót do menu głównego tego trybu. Wystarczy teraz wybrać opcję clean i wybrane przez Nas pliki zostaną usunięte.

4: ask each

Po wybraniu tej opcji zostaniemy zapytani o każdy plik czy chcemy go usunąć.

W przypadku dużej ilości plików to rozwiązanie może być trochę meczące. W tej opcji pliki są od razu usuwane. Nie są oznaczane jak w przypadku opcji select by numbers.

5: quit

Wyjście z tego trybu.

6: help

Pokaże wszystkie dostępne opcje z krótkim opisem.

 

Jak widać powyżej polecenie git clean jest szybką metodą na zrobienie porządku w projekcie. Dzięki trybowi interaktywnemu możemy wybrać, które pliki mają zostać usunięte, a które nie. A dzięki opcji --dry-run możemy najpierw sprawdzić co się usunie, dzięki czemu nie usuniemy plików w ciemno.

Źródło: https://git-scm.com/docs/git-clean

Kategorie: GitJak to działa?

3 Komentarze

Dominik · 16 sierpnia 2018 o 9 h 46 min

Bardzo fajna porada! Dzięki za podzielenie się

adobrzyc · 5 września 2018 o 7 h 46 min

git clean -xdf
Tego właśnie było mi trzeba!

dotnetomaniak.pl · 14 sierpnia 2018 o 6 h 26 min

Jak szybko zrobić porządek w projekcie – polecenie git clean – Tomasz Prasołek

Dziękujemy za dodanie artykułu – Trackback z dotnetomaniak.pl

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *