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

6838

Jak usunąć nieśledzone pliki lokalne z bieżącego działającego drzewa?

Tylko czytać
źródło
86
Ta interaktywna ściągawka git ndpsoftware.com/git-cheatsheet.html pokazuje obszar roboczy git (Google daje lepsze wyniki z „obszarem roboczym” niż „kopią roboczą”).
qneill
28
Uwaga: jeśli chcesz usunąć tylko niektóre nieśledzone pliki, ale nie wszystkie , git cleanma teraz tryb interaktywny ! Zobacz moją odpowiedź na to drugie pytanie : git 1.8.4+
VonC
17
Zauważ, że nie usuwasz plików z gałęzi git, ponieważ gałąź jest odniesieniem do zatwierdzenia, a zatem nie zawiera nieśledzonych plików. Są one obecne tylko w katalogu roboczym i nie mają nic wspólnego z gałęziami. To prawdopodobnie tylko wyjaśnienie terminologii.
Pavel Šimerda
6
Aby wyjaśnić zrozumienie dla niewtajemniczonych i nowicjuszy w Git - uruchom status git, a jeśli pokazuje plik jako nieśledzony, a nie chcesz tego pliku w repozytorium, możesz po prostu przejść do systemu plików i usunąć go lub przenieść . Nie zrobi to nic złego lokalnemu repozytorium ani Git. W git cleanodpowiedziach poniżej możesz również użyć lub wprowadzić pewne odmiany, w tym wersję interaktywną, aby usunąć tylko wybrane pliki, ale tryb interaktywny może być uciążliwy. Cokolwiek zrobisz, upewnij się, że rozumiesz, co git cleanzostanie usunięte lub którego użyjesz, --dry-runaby poinformować Cię bez usuwania niczego.
LightCC
4
Jeśli pliki nie są jeszcze śledzone, czy nie możesz po prostu usunąć ich bez git? rm files-to-be-deleted
mhatch

Odpowiedzi:

8730

git-clean - Usuń nieśledzone pliki z działającego drzewa

Streszczenie

git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>…​

Opis

Czyści drzewo robocze, rekurencyjnie usuwając pliki, które nie są pod kontrolą wersji, zaczynając od bieżącego katalogu .

Zwykle usuwane są tylko pliki nieznane Gitowi, ale jeśli -xpodano opcję, ignorowane pliki są również usuwane. Może to być na przykład przydatne do usunięcia wszystkich produktów kompilacji.

Jeśli <path>...podano dowolne opcjonalne argumenty, dotyczy to tylko tych ścieżek.


Krok 1 ma pokazać, co zostanie usunięte za pomocą -nopcji:

# Print out the list of files which will be removed (dry run)
git clean -n

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

# Delete the files from the repository
git clean -f
  • Aby usunąć katalogi, uruchom git clean -f -dlubgit clean -fd
  • Aby usunąć zignorowane pliki, uruchom git clean -f -Xlubgit clean -fX
  • Aby usunąć zignorowane i niezignorowane pliki, uruchom git clean -f -xlubgit clean -fx

Zwróć uwagę na różnicę wielkości znaków Xdla dwóch ostatnich poleceń.

Jeśli clean.requireForcew twojej konfiguracji jest ustawiona wartość „true” (domyślna), musisz określić, -finaczej nic się nie wydarzy.

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


Opcje

-f, --force

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

-x

Nie używaj standardowych reguł ignorowania odczytanych z .gitignore (dla katalogu) $GIT_DIR/info/exclude, ale nadal używaj reguł ignorowania podanych z -eopcjami. Umożliwia to usunięcie wszystkich nieśledzonych plików, w tym produktów kompilacji. Można tego użyć (ewentualnie w połączeniu z git reset), aby stworzyć nieskazitelny katalog roboczy do testowania czystej kompilacji.

-X

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

-n, --dry-run

Tak naprawdę niczego nie usuwaj, po prostu pokaż, co można zrobić.

-d

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

Ashkan Sirous
źródło
287
git clean -fdziała tylko w katalogu, w którym się nazywa (i podkatalogach). Jeśli chcesz wyczyścić całą kopię roboczą, powinieneś wywołać ją w katalogu głównym.
Eduardo Bezerra
17
Usuwa również wszystkie pliki w .gitignore. Muszę usunąć tylko pliki / foldery, które są nowe i nie znajdują się w
.gitignore
24
@Kostanos Jeśli nie chcesz usuwać plików z rozszerzeniem .gitignore, nie podawaj flagi -x.
Lo-Tan,
51
git clean -f :/działa tak, jakbyś uruchomił go w katalogu repozytorium root. Zobacz także późniejsze odpowiedzi uwzględniające również podmoduły zgit clean -ffxd :/
tutaj
18
@Michelle git clean -xfd BĘDZIE także USUWAĆ WSZYSTKIE PLIKI BIEŻĄCE ZGŁOSZONE W TWOIM .gitignore i nie można ich odzyskać
thedanotto
986

Użyj, git clean -f -daby upewnić się, że katalogi również zostały usunięte.

  1. Tak naprawdę niczego nie usuwaj, po prostu pokaż, co można zrobić.

    git clean -n
    

    lub

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

    git clean -fd
    

Następnie możesz sprawdzić, czy naprawdę nie ma plików git status.

robert.berger
źródło
115
Jak wcześniej wspomniano, dobrze jest go uruchomić na suchogit clean -n -d
Ms01
15
To samo robi git clean -ndi git clean -fd.
Micer,
477

Dziwi mnie, że nikt wcześniej o tym nie wspominał:

git clean -i

To oznacza interakcję, a otrzymasz szybki przegląd tego, co zostanie usunięte, oferując możliwość włączenia / wyłączenia plików, których dotyczy problem. Ogólnie rzecz biorąc, nadal szybciej niż uruchomienie obowiązkowe--dry-run przed prawdziwym czyszczeniem.

Będziesz musiał wrzucić, -djeśli chcesz zająć się również pustymi folderami. Na koniec tworzy fajny alias:

git iclean

To powiedziawszy, dodatkowe trzymanie w ręce interaktywnych poleceń może być męczące dla doświadczonych użytkowników. Obecnie używam tylko wspomnianego jużgit clean -fd

SystematicFrank
źródło
16
@ pal4life Zostało dodane w 1.8.4, być może korzystasz ze starszej wersji git? github.com/git/git/blob/master/Documentation/RelNotes/1.8.4.txt
Mattias Backman
Podoba mi się to - czuję się bardziej komfortowo, mając to w swojej historii basha, niż jakakolwiek inna opcja, ponieważ nie jest to wielka sprawa, jeśli przypadkowo ctrl-r lub ctrl-p do tego.
csvoss
250

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

git clean -d -f -f

Michał Szajbe
źródło
4
BTW, jest to napisane w dokumentacji : Git odmówi usunięcia katalogów z podkatalogiem lub plikiem .git, chyba że podano drugie -f. Ale i tak dzięki!
Maxim Suslov,
248

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

Aby usunąć wszystkie nieśledzone pliki, najprostszym sposobem jest dodanie ich wszystkich i zresetowanie repozytorium jak poniżej

git add --all
git reset --hard HEAD

Thanga
źródło
8
Można zastąpić git add --allprzez git add .. Możesz to zrobić w skrócie w trybie oneline git add . && git reset --hard HEAD (bądź bardzo ostrożny z tym poleceniem) .
RousseauAlexandre
22
Po co z tego korzystać git clean?
user2864740
8
Ponieważ git cleannajwyraźniej usuwa również wszystko, co jest ignorowane. Właśnie usunąłem mój node_modulesfolder. W ten sposób wszystkie pliki z wyjątkiem tych zignorowanych zostaną najpierw wyzerowane, a następnie usunięte przez wykonanie resetu. Zignorowane pliki nie zostaną dotknięte.
Andreas
5
@Andreas nie usuwa dla mnie ignorowanych plików (git 2.14.1). Powinieneś uruchomićgit clean -n mimo to przed prawdziwym usunięciem (lub użyciem git clean -i).
Qw3ry
8
git cleanusuwa zignorowane pliki tylko wtedy, gdy użyjesz opcji -xlub -X, w przeciwnym razie usuwa tylko nieśledzone pliki.
doubleDown,
140

Podoba mi się, git stash push -uponieważ możesz je wszystkie cofnąć git stash pop.

EDYCJA: Znalazłem również sposób na wyświetlenie nieśledzonego pliku w skrytce (np. git show stash@{0}^3) Https://stackoverflow.com/a/12681856/338986

EDYCJA 2: git stash savejest przestarzała na korzyść push. Dzięki @ skryptu-wilku.

Hiroshi
źródło
3
Czy możesz wyjaśnić -u na skrytce? Nie śledzę, jak to działa inaczej niż git stash save. Próbowałem tego i zadziałało. Zajrzałem do git docs i też nie mogłem go tam znaleźć.
Winnemucca,
9
-ujest równoważne z --include-untracked. Możesz znaleźć pomoc w git help stash.
hiroshi
3
@hiroshi Thanks! po wypróbowaniu każdego przeklętego rozwiązania od kilkunastu różnych osób, ten w końcu zadziałał ... eee! Nawet skrytka na gitarze zrobiła nada. Oszczędź - zadbałeś o nieśledzone. zresetuj hard / clean force / etc żaden z nich nic dla mnie nie zrobił.
killjoy
3
saveOpcja została zastąpiona push, który robi to samo, ale więcej. Możesz przeczytać więcej tutaj, /programming/44680028/whats-the-difference-between-git-stash-save-and-git-stash-push/44681952
Script Wolf
120

Tego zawsze używam:

git clean -fdx

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

Oscar Fraxedas
źródło
@Martin Jeden z projektów, nad którymi pracuję, ma ponad 8 lat, a +80 programistów aktywnie koduje. Git czasami nie oczyszcza go przy pierwszym przejściu.
Oscar Fraxedas
1
Mogę to potwierdzić, więc nadal obowiązuje to w 2020 r. Pracujemy również nad dużym projektem i musiałem go uruchomić 4-5 razy, aż GIT nie znalazł już żadnych plików do usunięcia.
turbolocust
90

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

Espo
źródło
86

Jeśli to konieczne, aby usunąć nieśledzone pliki z określonego podkatalogu,

git clean -f {dir_path}

I połączony sposób usuwania nieśledzonych plików / plików i plików ignorowanych.

git clean -fxd {dir_path}

po tym będziesz modyfikować pliki tylko w git status.

Vijay C.
źródło
68

Usuń wszystkie dodatkowe foldery i pliki w tym repozytorium + submodułach

To sprawia, że ​​jesteś w takim samym stanie jak świeży klon.

git clean -ffdx

Usuń wszystkie dodatkowe foldery i pliki w tym repozytorium, ale nie jego podmoduły

git clean -fdx

Usuń dodatkowe foldery, ale nie pliki (np. Folder kompilacji lub dzienników)

git clean -fd

Usuń dodatkowe foldery + zignorowane pliki (ale nie nowo dodane pliki)

Jeśli plik nie został zignorowany i nie został jeszcze zameldowany, pozostaje. Zwróć uwagę na duże X.

git clean -fdX

Nowy tryb interaktywny

git clean
Shital Shah
źródło
57

git clean -fd usuwa katalog

git clean -fX usuwa zignorowane pliki

git clean -fx usuwa zignorowane i niezauważone pliki

mogą być używane wszystkie powyższe opcje w kombinacji jako

git clean -fdXx

po więcej pomocy zajrzyj do instrukcji git

Pooja
źródło
10
Polecenie git clean -fdXxwyświetla komunikat o błędzie „fatal: -x i -X nie mogą być używane razem” (przy użyciu git-2.8). Aby podać ostatnie zdanie w odpowiedzi, podaj link do instrukcji git. Pozdrawiam
olibre
uruchom kolejno dwa polecenia: git clean -fdX, git clean -fdx
Zegar ZHONG
55

OK, usuwanie niechcianych nietrackowanych plików i folderów jest łatwe przy użyciu gitw wierszu poleceń, po prostu zrób to w następujący sposób:

git clean -fd

Sprawdź to jeszcze raz, ponieważ spowoduje to usunięcie plików i folderów bez tworzenia historii ...

Również w tym przypadku -foznacza siłę i -doznacza katalog ...

Jeśli więc chcesz usunąć tylko pliki, możesz użyć -ftylko:

git clean -f

Jeśli chcesz usunąć (katalogi) i pliki, możesz usunąć tylko nieśledzone katalogi i pliki w następujący sposób:

git clean -fd

Możesz także użyć -xflagi do włączenia plików, które są ignorowane przez git. Byłoby to pomocne, jeśli chcesz usunąć wszystko.

Dodanie -iflagi powoduje, że git prosi o pozwolenie na usuwanie plików jeden po drugim w podróży.

Jeśli nie jesteś pewien i chcesz najpierw sprawdzić, dodaj -nflagę.

Użyj, -qjeśli nie chcesz zobaczyć żadnego raportu po pomyślnym usunięciu.

Tworzę również poniższy obrazek, aby był bardziej niezapomniany, zwłaszcza że widziałem, jak wielu ludzi myli się -fczasem, czyszcząc folder lub jakoś go pomieszać!


usuwanie niechcianych nieśledzonych plików i folderów

Alireza
źródło
Co jest z tym obrazem?
Pacerier
37

Lepszym sposobem jest użycie: git clean

git clean -d -x -f

Usuwa nieśledzone pliki, w tym katalogi (-d)i pliki ignorowane przez git (-x).

Również zastąpienie -fargument z -naby przeprowadzić dry-runlub -idla trybu interaktywnego i powie to, co zostanie usunięty.

Rehabilitacyjny
źródło
25

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/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/arsdumpgenerator/s3/ [y/N]? y

-i dla interaktywnego
-f dla wymuszenia
-d dla katalogu
-x dla ignorowanych plików (dodaj, jeśli wymagane)

Uwaga: Dodaj -n lub --dry-run, aby sprawdzić, co zrobi.

bit_cracker007
źródło
20

Lifehack dla takiej sytuacji, którą właśnie wymyśliłem i wypróbowałem (to działa idealnie):

git add .
git reset --hard HEAD

Strzec się! Pamiętaj, aby zatwierdzić wszelkie niezbędne zmiany (nawet w plikach bez śledzenia) przed wykonaniem tej czynności .

thybzi
źródło
3
Przynajmniej jest to inne podejście. :) Innym sposobem, aby zapamiętać usunięte pliki w git add . git commit -m 'about to delete' git reset --hard HEAD~
dzienniku logowania,
2
jeszcze git add . && git reset --hard HEAD
szybszym
3
git add . && git reset --hard
Pleymor,
To może nie być to, czego oczekujesz, jeśli istnieją również zmiany, które chcesz zatwierdzić.
lacostenycoder
@AlexanderMills git reset --hardresetuje wszystkie niezaangażowane zmiany, ALE NIEŚLEDZONE PLIKI do stanu ostatniego zatwierdzenia. Właśnie dlatego najpierw potrzebujemy git add .- aby etapy wszystkie nieśledzone pliki (więc też zostały zresetowane)
thybzi
19

git clean -f -d -x $(git rev-parse --show-cdup)stosuje czyste do katalogu głównego, bez względu na to, jak go wywołać w drzewie katalogów repozytorium. Używam go cały czas, ponieważ nie zmusza cię to do opuszczenia folderu, w którym pracujesz teraz, i pozwala wyczyścić i zatwierdzić z miejsca, w którym jesteś.

Bądź pewny, że flagi -f, -d, -xdopasowane do potrzeb:

-d
       Remove untracked directories in addition to untracked files. If an
       untracked directory is managed by a different Git repository, it is
       not removed by default. Use -f option twice if you really want to
       remove such a directory.

-f, --force
       If the Git configuration variable clean.requireForce is not set to
       false, git clean will refuse to delete files or directories unless
       given -f, -n or -i. Git will refuse to delete directories with .git
       sub directory or file unless a second -f is given. This affects
       also git submodules where the storage area of the removed submodule
       under .git/modules/ is not removed until -f is given twice.

-x
       Don't use the standard ignore rules read from .gitignore (per
       directory) and $GIT_DIR/info/exclude, but do still use the ignore
       rules given with -e options. This allows removing all untracked
       files, including build products. This can be used (possibly in
       conjunction with git reset) to create a pristine working directory
       to test a clean build.

Dostępne są również inne flagi, po prostu sprawdź git clean --help.

Nikita Leonow
źródło
BTW, możesz po prostu zrobić git clean {flags}: / więc będzie tak, jakbyś uruchomił polecenie w katalogu głównym repo
The-null-Pointer-
19

Dla mnie działały tylko:

git clean -ffdx

We wszystkich innych przypadkach otrzymywałem komunikat „Skipping Directory” dla niektórych podkatalogów.

rahul286
źródło
2
Dzięki. Pominąłem -xi po prostu git clean -ffdunikałem kasowania plików w .gitignore.
Feckmore,
15

Jeśli chcesz tylko usunąć pliki wymienione jako nieśledzone przez „git status”

git stash save -u
git stash drop "stash@{0}"

Wolę to niż „git clean”, ponieważ „git clean” usunie pliki ignorowane przez git, więc twoja następna kompilacja będzie musiała odbudować wszystko i możesz stracić ustawienia IDE.

jazzdev
źródło
3
Spowoduje to również usunięcie prawidłowych zmian w śledzonych plikach. Nie poleciłbym tego.
code_dredd
2
Tak, najpierw musisz zatwierdzić zmiany w śledzonych plikach.
jazzdev
14

Aby wiedzieć, co zostanie usunięte przed faktycznym usunięciem:

git clean -d -n

Wyprowadzi coś takiego:

Usunąłby sample.txt

Aby usunąć wszystko wymienione w danych wyjściowych poprzedniego polecenia:

git clean -d -f

Wyprowadzi coś takiego:

Usuwanie sample.txt

Omar Mowafi
źródło
11

Aby usunąć nieśledzone pliki, należy najpierw użyć polecenia, aby wyświetlić pliki, na które będzie miało wpływ czyszczenie

git clean -fdn

Spowoduje to wyświetlenie listy plików, które zostaną usunięte. Teraz, aby faktycznie usunąć te pliki, użyj tego polecenia:

git clean -fd
Gauraw
źródło
11

Zachowaj ostrożność podczas uruchamiania polecenia `git clean`.

Zawsze używaj -n przed uruchomieniem właściwego polecenia, ponieważ pokaże, jakie pliki zostaną usunięte.

git clean -n -d 
git clean -f -d

Domyślnie git cleanusuwa tylko nieśledzone pliki, które nie są ignorowane. Każdy plik pasujący do wzorca w .gitignore lub innych plikach ignorowania nie zostanie usunięty. Jeśli chcesz usunąć te pliki, możesz dodać -xpolecenie do polecenia clean.

git clean -f -d -x

Dostępny jest również tryb interaktywny -iz poleceniem czyszczenia

git clean -x -i

Alternatywnie

Jeśli nie masz 100% pewności, że usunięcie niezaangażowanej pracy jest bezpieczne, możesz zamiast tego użyć ukrywania

git stash --all

Będzie również wyczyścić katalog ale daje elastyczność, aby pobrać pliki w dowolnym momencie za pomocą zapas z zastosowania lub pop . Następnie możesz wyczyścić skrytkę, używając:

git stash drop // or clean
DevWL
źródło
2
skrytka jest dobrym pomysłem, jednak możesz chcieć użyćgit stash save and type some comment as to what this stash was for
lacostenycoder
9

uggested Polecenie usuwania nieśledzonych plików z git docs jest git clean

oczyść się - Usuń nieśledzone pliki z drzewa roboczego

Sugerowana metoda: tryb interaktywny, git clean -i dzięki któremu możemy mieć nad nim kontrolę. zobacz pozostałe dostępne opcje.

Dostępne opcje:

git clean 
    -d -f -i -n -q -e -x -X (can use either)

Wyjaśnienie:

1. -d

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

2. -f, --force

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

3. -i, --interactive

Pokaż, co można zrobić, i czyść pliki interaktywnie. Szczegółowe informacje zawiera „Tryb interaktywny”.

4. -n, --dry-run

Tak naprawdę niczego nie usuwaj, po prostu pokaż, co można zrobić.

5. -q, - cicho

Bądź cicho, zgłaszaj tylko błędy, ale nie pliki, które zostały pomyślnie usunięte.

6. -e, --exclude =

Oprócz wzorców znalezionych w .gitignore (dla katalogu) i $ GIT_DIR / info / exclude, należy również uwzględnić te wzorce w zestawie obowiązujących reguł ignorowania.

7. -x

Nie używaj standardowych reguł ignorowania odczytanych z .gitignore (dla katalogu) i $ GIT_DIR / info / exclude, ale nadal używaj reguł ignorowania podanych z opcjami -e. Umożliwia to usunięcie wszystkich nieśledzonych plików, w tym produktów kompilacji. Można tego użyć (ewentualnie w połączeniu z git reset), aby stworzyć nieskazitelny katalog roboczy do testowania czystej wersji.

8. -X

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

Mohideen bin Mohammed
źródło
Myślę, że masz literówkę, uggestedale to tylko „ uggestionlol
lacostenycoder
8

Normalne git cleanpolecenie nie usuwa nieśledzonych plików z moim git version 2.9.0.windows.1.

$ git clean -fdx     # doesn't remove untracked files
$ git clean -fdx *   # Append star then it works!
kujiy
źródło
7

Możemy łatwo usunąć lokalne nieśledzone pliki z bieżącego drzewa roboczego git, używając poniższych komentarzy git.

git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]

Przykład:

git reset --hard HEAD

Linki:

  1. https://git-scm.com/docs/git-reset
  2. Jak użyć „git reset --hard HEAD”, aby powrócić do poprzedniego zatwierdzenia?
  3. Zresetuj gałąź repozytorium lokalnego tak, aby działała jak HEAD
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html
Elangovana
źródło
Spowoduje to również usunięcie zmian wprowadzonych dla zatwierdzenia, a nie tylko nieśledzonych plików, które mogą nie być tym, czego chcesz.
chrapliwy
Nie działa: pozostawia niektóre pliki. git clean -ffdxjest rozwiązaniem
Eugene Gr. Philippov
7

Wyczyść repozytorium git i wszystkie podmoduły rekurencyjnie

Następujące polecenie wyczyści rekurencyjnie bieżące repozytorium git i wszystkie jego podmoduły:

(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)
Siergiej
źródło
z pewnością należy tego używać z wielką ostrożnością
lacostenycoder
6
git clean -f

usunie nieśledzone pliki z bieżącego gita

git clean -fd

jeśli chcesz usunąć katalogi i pliki, spowoduje to usunięcie tylko nieśledzonych katalogów i plików

Sudhir Vishwakarma
źródło
5

oh-my-zsh z zsh zapewnia te wspaniałe aliasy poprzez wtyczkę git. Mogą być również używane w bashu.

gclean='git clean -fd'
gpristine='git reset --hard && git clean -dfx'

  • gclean usuwa nieśledzone katalogi oprócz nieśledzonych plików .
  • gpristinemocno zresetuj lokalne zmiany, usuń nieśledzone katalogi, nieśledzone pliki i nie używaj standardowych reguł ignorowania odczytanych z .gitignore (dla katalogu) i $ GIT_DIR / info / exclude, ale nadal używaj reguł ignorowania podanych z opcjami -e. Umożliwia to usunięcie wszystkich nieśledzonych plików, w tym produktów kompilacji. Można tego użyć (ewentualnie w połączeniu z git reset), aby stworzyć nieskazitelny katalog roboczy do testowania czystej kompilacji .
ZenLulz
źródło
2
Dzięki za opinie, moje oświadczenie było mylące. Chciałem powiedzieć, że podświetlone aliasy pochodzą automatycznie z och-my-zsh. Oczywiście działają świetnie bash. Zredagowałem swoją odpowiedź, aby to odzwierciedlić.
ZenLulz
4

Lubię używać git stashpolecenia, później można uzyskać ukryte pliki i zmiany. git cleanjest również dobrą opcją, ale całkowicie zależy od twoich wymagań. oto wyjaśnienie git stash i git clean, 7.3 Git Tools - Stashing and Cleaning

Zia
źródło