Pytanie Jak usunąć lokalne (nieśledzone) pliki z bieżącego drzewa roboczego Git?


Jak usunąć niepobrane pliki lokalne z bieżącego drzewa roboczego?


5796
2017-09-14 09:06


pochodzenie


Ten interaktywny arkusz do ściągania git ndpsoftware.com/git-cheatsheet.html pokazuje obszar roboczy git (google daje lepsze wyniki w "przestrzeni roboczej" niż "kopia robocza"). - qneill
Uwaga: jeśli chcesz tylko usunąć trochę nieśledzone pliki, ale nie wszyscy z nich, git clean ma teraz interaktywny tryb! Widzieć moja odpowiedź na to inne pytanie: git 1.8.4+ - VonC
Zauważ, że nie usuwasz plików z gałęzi git, ponieważ branch jest odwołaniem do commit i dlatego nie zawiera nieśledzonych plików. Są one obecne tylko w katalogu roboczym i nie mają nic wspólnego z oddziałami. To prawdopodobnie tylko wyjaśnienie terminologii. - Pavel Šimerda
Zanim opublikujesz nową odpowiedź, zastanów się, że masz już ponad 25 odpowiedzi na to pytanie. Upewnij się, że twoja odpowiedź przyczynia się do tego, czego nie ma wśród istniejących odpowiedzi - Sazzad Hissain Khan
Aby wyjaśnić zrozumienie dla niewtajemniczonych i tych, którzy są nowi w Git-run status git i jeśli pokazuje plik jako untracked, a nie chcesz tego pliku w repozytorium, możesz po prostu przejść do swojego systemu plików i usunąć lub przenieść go . To nie zrobi nic złego w twoim lokalnym repozytorium lub Git. Możesz także użyć git clean lub pewną odmianę poniższych odpowiedzi, w tym wersję interaktywną, która usuwa tylko pliki selektywne, ale tryb interaktywny może być uciążliwy. Cokolwiek robisz, upewnij się, że rozumiesz co git clean usunie lub użyje --dry-run mieć to do powiedzenia bez usuwania czegokolwiek. - LightCC


Odpowiedzi:


Zgodnie z dokumentacją Git git clean

Usuń nieśledzone pliki z drzewa roboczego


Krok 1 to pokazanie, co zostanie usunięte przy użyciu -n opcja:

git clean -n

Clean Step - uwaga: spowoduje to usunięcie plików:

git clean -f
  • Aby usunąć katalogi, uruchom git clean -f -d lub git clean -fd
  • Aby usunąć zignorowane pliki, uruchom git clean -f -X lub git clean -fX
  • Aby usunąć zignorowane i niezignorowane pliki, uruchom git clean -f -x lub git clean -fx

Uwaga różnica w przypadku X dla dwóch ostatnich poleceń.

Gdyby clean.requireForce jest ustawiony na "true" (domyślny) w twojej konfiguracji, trzeba to określić -f inaczej nic się nie wydarzy.

Ponownie zobacz git-clean dokumenty, aby uzyskać więcej informacji.

Opcje

-fa

--siła

Jeśli zmienna konfiguracyjna Git clean.requireForce nie jest ustawiona na false, git clean odmówi uruchomienia, chyba że podano -f, -n lub -i.

-x

Nie używaj standardowych reguł ignorowania odczytanych z .gitignore (dla katalogu) i $ GIT_DIR / info / exclude, ale nadal używają reguł ignorowania podanych w opcjach -e. Pozwala to na usunięcie wszystkich nieśledzonych plików, w tym produktów do kompilacji. Można go użyć (ewentualnie w połączeniu z resetem git), aby utworzyć nieskazitelny katalog roboczy, aby przetestować czystą kompilację.

-X

Usuń tylko pliki zignorowane przez Git. Może to być przydatne do odbudowania wszystkiego od zera, ale zachowaj ręcznie utworzone pliki.

-n

--próba

Nie usuwaj niczego, tylko pokaż, co by się stało.

-re

Usuń nieśledzone katalogi oprócz nieśledzonych plików. Jeśli katalog nieśledzony jest zarządzany przez inne repozytorium Git, nie jest domyślnie usuwany. Użyj opcji -f dwa razy, jeśli naprawdę chcesz usunąć taki katalog.


7613
2018-05-26 20:59



git clean -f działa tylko w katalogu, w którym jest wywoływana (i podkatalogach). Jeśli chcesz wyczyścić całą kopię roboczą, powinieneś ją wywołać w jej katalogu głównym. - Eduardo Bezerra
Usuwa również wszystkie pliki wewnątrz .gitignore. Muszę usunąć tylko pliki / foldery, które są nowe, a nie w .gitignore - Kostanos
@Kostanos Jeśli nie chcesz usuwać plików znajdujących się w .gitignore, nie podawaj flagi -x. - Lo-Tan
git clean -f :/ działa tak, jakby uruchomić go w katalogu głównym repo. Zobacz także późniejsze odpowiedzi z uwzględnieniem podmodułów z git clean -ffxd :/ - here
@Michelle git clean -xfd USUNĄĆ WSZYSTKIE PLIKI OBECNIE ZAPROJEKTOWANE W TWOJEJ wersji .gitignore i nie można ich odzyskać - thedanotto


Posługiwać się git clean -f -d upewnić się że katalogi są również usuwane.

Możesz wtedy sprawdzić, czy twoje pliki naprawdę zniknęły git status.


817
2017-12-30 20:12



Jak już wspomniano, dobrze jest suszyć na sucho git clean -n -d - Ms01
To samo należy zrobić git clean -nd i git clean -fd. - Micer


Jestem zaskoczony, że nikt wcześniej o tym nie wspominał:

git clean -i

To znaczy interaktywny i uzyskasz szybki przegląd tego, co zostanie usunięte, oferując możliwość dołączenia / wykluczenia plików, których dotyczy problem. Ogólnie rzecz biorąc, nadal jest to szybsze niż uruchomienie obowiązkowego --dry-run przed prawdziwym sprzątaniem.

Będziesz musiał wrzucić w -d jeśli chcesz także zadbać o puste foldery. Na końcu tworzy ładny alias:

git iclean

W związku z tym dodatkowe trzymanie interaktywnych poleceń może być męczące dla doświadczonych użytkowników. W tych dniach używam już wspomnianego git clean -fd 


397
2017-09-14 09:09



otrzymano: błąd: nieznany przełącznik "i" - pal4life
@ Pal4life Został dodany w wersji 1.8.4, prawdopodobnie używasz starszej wersji git? github.com/git/git/blob/master/Documentation/RelNotes/1.8.4.txt - Mattias Backman
@SystematicFrank, nie używaj pseudonimu, tak naprawdę nie przekraczają 1 osoby .... - Pacerier


git-clean - Usuń nieśledzone pliki z drzewa roboczego


387
2018-01-25 12:24





Jeśli nieśledzony katalog jest własnym repozytorium git (np. Podmoduł), musisz go użyć -f dwa razy:

git clean -d -f -f


200
2018-06-03 12:16



BTW, to jest napisane w dokumentacja : Git odmówi usunięcia katalogów z podkatalogiem .git lub plikiem, chyba że podano drugą -f. Ale i tak dzięki! - Maxim Suslov


Prosty sposób na usunięcie nieśledzonych plików

Aby usunąć wszystkie niepobrane pliki, proste   droga to dodaj je wszystkie jako pierwsze i zresetować repozytoriumjak poniżej

git add --all
git reset --hard HEAD


145
2018-01-11 00:41



Możesz wymienić git add --all przez git add .. Możesz to zrobić w krótszy sposób w linii prostej git add . && git reset --hard HEAD  ( być bardzo ostrożnie z tym poleceniem). - RousseauAlexandre
Po co to wykorzystywać git clean? - user2864740
Bo git clean najwyraźniej usuwa także wszystko, co jest ignorowane. To właśnie usunęło moje node_modules teczka. W ten sposób najpierw wszystkie pliki z wyjątkiem tych zignorowanych, a następnie usunąć je, wykonując reset. Zignorowane pliki nie zostaną dotknięte. - Andreas
@Andreas nie usuwa zignorowanych plików dla mnie (git 2.14.1). Powinieneś uciekać git clean -n tak czy inaczej przed wykonaniem prawdziwego usunięcia (lub użycia git clean -i). - Qw3ry
git clean usuwa zignorowane pliki tylko wtedy, gdy używasz -x lub -X opcja, w przeciwnym razie po prostu usuwa nieśledzone pliki. - doubleDown


lubię git stash save -u ponieważ możesz je wszystkie cofnąć git stash pop.

EDYCJA: Znalazłem sposób, aby pokazać nieudokumentowany plik w skrytce (np. git show stash@{0}^3) https://stackoverflow.com/a/12681856/338986


118
2017-11-25 14:16



Czy możesz wyjaśnić -u na skrytce? Nie śledzę, jak to działa inaczej niż w przypadku git save. Próbowałem tego i zadziałało. Spojrzałem na dokumenty git i nie mogłem go tam znaleźć. - Winnemucca
-u jest równa --include-untracked. Możesz znaleźć pomoc git help stash. - hiroshi
@hiroshi Dzięki! po wypróbowaniu każdego cholernego rozwiązania od kilkunastu różnych osób to ten, który w końcu zadziałał ... whew! Nawet skrytka git nadała się. Uratowałeś - zadbałeś o nieśledzony. zresetować twardą / czystą siłę / itp. żaden z nich nic dla mnie nie zrobił. - killjoy


Zawsze używam tego:

git clean -fdx

W przypadku bardzo dużego projektu możesz go uruchomić kilka razy.


92
2017-09-14 09:08



Czy mógłbyś wyjaśnić uwagę na temat dużych projektów? - Martin
@Martin Jeden z projektów, nad którymi pracuję, ma +8 lat, a +80 programistów aktywnie koduje. Git czasami nie wyczyści go przy pierwszym przejściu. - Oscar Fraxedas


git-clean jest tym, czego szukasz. Służy do usuwania nieśledzonych plików z drzewa roboczego.


83
2017-09-24 06:28



ten sam komentarz co poprzednio: linux.die.net/man/1/git-clean - dlewin


W razie potrzeby usunąć niepobrane pliki z określonego podkatalogu,

git clean -f {dir_path}

Połączony sposób usuwania nierejestrowanych katalogów / plików i zignorowanych plików.

git clean -fxd {dir_path}

po tym będziesz miał zmodyfikowane pliki tylko w git status.


71
2018-01-22 06:33