Git: Jak usunąć wszystkie nieśledzone pliki?

35

Używam Git do kontroli wersji. Teraz chcę usunąć na moim komputerze lokalnym wszystkie pliki w repozytorium, które nie są śledzone.

mogę użyć

git status

aby wyświetlić te pliki, ale jak mogę je usunąć?

RoflcoptrException
źródło
1
Nie możesz po prostu sprawdzić wszystkich plików w innym miejscu na swoim komputerze, a następnie usunąć starą wersję?
Nifle
1
Na pewno mogę, ale czy nie ma prostszego sposobu?
RoflcoptrException

Odpowiedzi:

51

Jeśli go masz, zignoruj, użyj git clean -xf. Możesz to zrobić git clean -df ale to również usunie nie śledzone katalogi. Posługiwać się -n na sucho.

Widzieć sprzątanie bez śledzenia

icecurtain
źródło
3
-x ignoruje ignorowania ..
UpAndAdam
7
-xf usunie i ignorowane pliki i to prawdopodobnie NIE tego, czego chcesz. Posługiwać się -nf i postępuj ostrożnie. Widzieć: stackoverflow.com/questions/61212/…
Mr_and_Mrs_D
2
Pamiętaj, że może to spowodować usunięcie twoich folderów środowiska / IDE (np. .Vagrant lub .idea (phpstorm))
timhc22
5
git  czysty  -fa 
grawity
źródło
7
Sensowne może być dodanie znaczenia tego polecenia, aby ta odpowiedź była niezależna.
N.N.
4

Interaktywne podejście użytkownika:

git clean -i -fd

Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/amazon/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/s3/ [y/N]? y

-i dla interaktywnego
-f dla pliku
-d dla katalogu

Uwaga: Dodaj -n lub --próba po prostu sprawdź, co zrobi.

bit_cracker007
źródło
3

Warto wspomnieć o subtelności git clean -f vis-a-vis nieśledzonych plików i katalogów. Jeśli masz nieśledzony katalog, który zawiera pliki, które a fortiori nie są śledzone git clean -f NIE usunie tych nieśledzonych plików.

Innymi słowy, NIE zawsze tak jest git clean -f usunie wszystkie nieśledzone pliki. Lepsze wyjaśnienie git clean -f jest to, że usuwa wszystkie nieśledzone pliki, które są nie w nieśledzonych katalogach.

git clean -f -d musi służy do usuwania nieśledzonych plików znajdujących się w nieśledzonych katalogach i wydaje się, że nie ma możliwości usunięcia wszystkich nieśledzonych plików bez również usuwanie nieśledzonych katalogów, które zawierają tylko nieśledzone pliki.

Posługiwać się git clean -f -d -n NAPRAWDĘ zobaczyć, co chcesz zrobić, aby przywrócić katalog roboczy do tego, co byłoby bez żadnych nieśledzonych plików. Następnie użyj git clean -f -d aby to zrobić.

Dennis G Allard
źródło