So entfernen Sie lokale (nicht verfolgte) Dateien aus dem aktuellen Git-Arbeitsbaum


6841

Wie löscht man nicht verfolgte lokale Dateien aus Ihrem aktuellen Arbeitsbaum?


86
Dieser interaktive Git-Spickzettel ndpsoftware.com/git-cheatsheet.html zeigt den Git-Arbeitsbereich (Google liefert mit "Arbeitsbereich" bessere Ergebnisse als mit "Arbeitskopie").
Qneill

28
Hinweis: Wenn Sie nur einige nicht verfolgte Dateien entfernen möchten , aber nicht alle , git cleanverfügt dies jetzt über einen interaktiven Modus! Siehe meine Antwort auf diese andere Frage : Git 1.8.4+
VonC

17
Beachten Sie, dass Sie keine Dateien aus dem Git-Zweig entfernen, da der Zweig ein Verweis auf ein Commit ist und daher keine nicht verfolgten Dateien enthält. Diese sind nur im Arbeitsverzeichnis vorhanden und haben nichts mit Zweigen zu tun. Das ist wahrscheinlich nur eine Klärung der Terminologie.
Pavel Šimerda

6
Um das Verständnis des nicht eingeweihten und des neuen Git-Status zu verbessern, führen Sie den Git-Status aus. Wenn eine Datei als nicht verfolgt angezeigt wird und Sie diese Datei nicht im Repo haben möchten, können Sie einfach zu Ihrem Dateisystem gehen und sie löschen oder verschieben . Dies wird Ihrem lokalen Repo oder Git nichts anhaben. Sie können auch git cleandie folgenden Antworten verwenden oder variieren, einschließlich der interaktiven Version, um nur ausgewählte Dateien zu löschen. Der interaktive Modus kann jedoch langwierig sein. Was auch immer Sie tun, stellen Sie sicher, dass Sie verstehen, was git cleangelöscht oder verwendet wird --dry-run, damit es Ihnen mitteilt, ohne etwas zu löschen.
LightCC

4
Wenn die Dateien noch nicht verfolgt werden, können Sie sie dann nicht einfach ohne Git entfernen? rm files-to-be-deleted
mhatch

Antworten:


8732

git-clean - Entfernen Sie nicht verfolgte Dateien aus dem Arbeitsbaum

Zusammenfassung

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

Beschreibung

Bereinigt den Arbeitsbaum durch rekursives Entfernen von Dateien, die nicht der Versionskontrolle unterliegen, beginnend mit dem aktuellen Verzeichnis .

Normalerweise werden nur Dateien entfernt, die Git nicht bekannt sind. Wenn die -xOption angegeben ist, werden auch ignorierte Dateien entfernt. Dies kann beispielsweise nützlich sein, um alle Build-Produkte zu entfernen.

Wenn optionale <path>...Argumente angegeben werden, sind nur diese Pfade betroffen.


Schritt 1 besteht darin, zu zeigen, was mit der folgenden -nOption gelöscht wird :

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

Clean Step - Vorsicht: Dadurch werden Dateien gelöscht :

# Delete the files from the repository
git clean -f
  • Führen Sie git clean -f -doder aus, um Verzeichnisse zu entfernengit clean -fd
  • Führen Sie git clean -f -Xoder aus, um ignorierte Dateien zu entfernengit clean -fX
  • Führen Sie git clean -f -xoder aus, um ignorierte und nicht ignorierte Dateien zu entfernengit clean -fx

Beachten Sie den Fallunterschied Xbei den beiden letztgenannten Befehlen.

Wenn clean.requireForcein Ihrer Konfiguration "true" (Standardeinstellung) festgelegt ist, muss angegeben werden, dass -fsonst nichts passiert.

git-cleanWeitere Informationen finden Sie in den Dokumenten.


Optionen

-f, --force

Wenn die Git-Konfigurationsvariable clean.requireForce nicht auf false gesetzt ist, lehnt git clean die Ausführung ab, sofern nicht anders angegeben -f, -noder -i.

-x

Verwenden Sie nicht die Standard-Ignorierregeln, die aus .gitignore (pro Verzeichnis) und gelesen wurden $GIT_DIR/info/exclude, sondern die mit -eOptionen angegebenen Ignorierregeln . Dies ermöglicht das Entfernen aller nicht verfolgten Dateien, einschließlich Build-Produkte. Dies kann verwendet werden (möglicherweise in Verbindung mit dem Zurücksetzen von Git), um ein makelloses Arbeitsverzeichnis zum Testen eines sauberen Builds zu erstellen.

-X

Entfernen Sie nur Dateien, die von Git ignoriert werden. Dies kann nützlich sein, um alles von Grund auf neu zu erstellen, aber manuell erstellte Dateien beizubehalten.

-n, --dry-run

Entfernen Sie eigentlich nichts, sondern zeigen Sie nur, was getan werden würde.

-d

Entfernen Sie nicht verfolgte Verzeichnisse zusätzlich zu nicht verfolgten Dateien. Wenn ein nicht verfolgtes Verzeichnis von einem anderen Git-Repository verwaltet wird, wird es standardmäßig nicht entfernt. Verwenden Sie die -fOption zweimal, wenn Sie ein solches Verzeichnis wirklich entfernen möchten.


288
git clean -ffunktioniert nur in dem Verzeichnis, in dem es aufgerufen wird (und in den Unterverzeichnissen). Wenn Sie die gesamte Arbeitskopie bereinigen möchten, sollten Sie sie im Stammverzeichnis aufrufen.
Eduardo Bezerra

17
Außerdem werden alle Dateien in .gitignore entfernt. Ich muss nur Dateien / Ordner löschen, die neu sind und nicht in .gitignore
Kostanos

24
@Kostanos Wenn Sie keine Dateien entfernen möchten, die sich in .gitignore befinden, geben Sie das Flag -x nicht an.
Lo-Tan

52
git clean -f :/funktioniert so, als hätten Sie es im Root-Repo-Verzeichnis ausgeführt. Siehe auch spätere Antworten, die auch Submodule mit berücksichtigengit clean -ffxd :/
hier

18
@Michelle git clean -xfd wird auch alle Dateien entfernen, die derzeit in Ihrem .gitignore ignoriert werden und sie können nicht wiederhergestellt werden
thedanotto

986

Verwenden Sie git clean -f -ddiese Option , um sicherzustellen, dass auch Verzeichnisse entfernt werden.

  1. Entfernen Sie eigentlich nichts, sondern zeigen Sie nur, was getan werden würde.

    git clean -n
    

    oder

    git clean --dry-run
    
  2. Entfernen Sie nicht verfolgte Verzeichnisse zusätzlich zu nicht verfolgten Dateien. Wenn ein nicht verfolgtes Verzeichnis von einem anderen Git-Repository verwaltet wird, wird es standardmäßig nicht entfernt. Verwenden Sie die -fOption zweimal, wenn Sie ein solches Verzeichnis wirklich entfernen möchten.

    git clean -fd
    

Sie können dann überprüfen, ob Ihre Dateien wirklich verschwunden sind git status.


115
Wie bereits erwähnt, gut, um es mitgit clean -n -d
Ms01

15
Das Gleiche ist zu tun git clean -ndund git clean -fd.
Micer

478

Ich bin überrascht, dass dies noch niemand erwähnt hat:

git clean -i

Das steht für interaktiv und Sie erhalten einen schnellen Überblick darüber, was gelöscht werden soll, und haben die Möglichkeit, die betroffenen Dateien einzuschließen / auszuschließen. Insgesamt immer noch schneller als das Ausführen der Pflicht --dry-runvor der eigentlichen Reinigung.

Sie müssen ein werfen, -dwenn Sie sich auch um leere Ordner kümmern möchten. Am Ende ergibt sich ein netter Alias:

git iclean

Abgesehen davon kann das zusätzliche Halten interaktiver Befehle für erfahrene Benutzer anstrengend sein. In diesen Tagen benutze ich nur das bereits erwähntegit clean -fd


16
@ pal4life Es wurde in 1.8.4 hinzugefügt, Sie könnten eine ältere Version von Git ausführen? github.com/git/git/blob/master/Documentation/RelNotes/1.8.4.txt
Mattias Backman

Ich mag das - ich fühle mich wohler in meiner Bash-Geschichte als jede andere Option, weil es keine große Sache ist, wenn ich versehentlich Strg-R oder Strg-P ​​dazu drücke.
CSVoss

Könnte es sein, dass dies git clean -inur funktioniert, wenn es vom Stammverzeichnis der Arbeitskopie aufgerufen wird?
Alessandro Jacopson vor


250

Wenn das nicht verfolgte Verzeichnis ein eigenes Git-Repository ist (z. B. ein Submodul), müssen Sie es -fzweimal verwenden:

git clean -d -f -f


4
Übrigens ist dies in der Dokumentation geschrieben : Git weigert sich, Verzeichnisse mit dem Unterverzeichnis oder der Datei .git zu löschen, es sei denn, ein zweites -f wird angegeben. Danke trotzdem!
Maxim Suslov

248

Einfache Möglichkeit, nicht verfolgte Dateien zu entfernen

Um alle nicht verfolgten Dateien zu entfernen, fügen Sie einfach alle zuerst hinzu und setzen das Repo wie folgt zurück

git add --all
git reset --hard HEAD


8
Sie können ersetzen git add --alldurch git add .. Sie können dies also in kürzerer Zeit online tun git add . && git reset --hard HEAD (seien Sie mit diesem Befehl sehr vorsichtig) .
RousseauAlexandre

22
Warum dies über verwenden git clean?
user2864740

8
Denn git cleananscheinend wird auch alles gelöscht, was ignoriert wird. Es hat gerade meinen node_modulesOrdner gelöscht . Wenn Sie dies tun, werden zuerst alle Dateien mit Ausnahme der ignorierten Dateien inszeniert und dann durch Zurücksetzen gelöscht. Ignorierte Dateien werden nicht berührt.
Andreas

5
@Andreas löscht keine ignorierten Dateien für mich (Git 2.14.1). Sie solltengit clean -n trotzdem ausführen, bevor Sie das eigentliche Löschen (oder Verwenden git clean -i) durchführen.
Qw3ry

8
git cleanLöscht ignorierte Dateien nur, wenn Sie die Option -xoder verwenden -X. Andernfalls werden nur nicht verfolgte Dateien gelöscht.
DoubleDown

140

Ich mag, git stash push -uweil Sie sie alle mit rückgängig machen können git stash pop.

EDIT: Auch fand ich eine Art und Weise untracked Datei in einem Versteck zu zeigen (zB git show stash@{0}^3) https://stackoverflow.com/a/12681856/338986

EDIT2: git stash savewird zugunsten von abgelehnt push. Danke @ script-wolf.


3
Können Sie das -u auf dem Versteck erklären? Ich verfolge nicht, wie das anders funktioniert als git stash save. Ich habe es versucht und es hat funktioniert. Sah auf Git-Dokumenten und konnte es dort auch nicht finden.
Winnemucca

9
-uist äquivalent zu --include-untracked. Sie finden eine Hilfe bei git help stash.
Hiroshi

3
@ Hiroshi Danke! Nachdem ich jede verdammte Lösung von einem Dutzend verschiedener Leute ausprobiert habe, hat diese endlich funktioniert ... Puh! Sogar ein Idiot hat nada gemacht. Das Speichern - u kümmerte sich um nicht verfolgt. Hard / Clean Force / etc zurücksetzen. Nichts davon hat etwas für mich getan.
Killjoy

3
Die saveOption wurde zugunsten von abgelehnt push, was dasselbe tut, aber mehr. Sie können mehr hier lesen, /programming/44680028/whats-the-difference-between-git-stash-save-and-git-stash-push/44681952
Script Wolf

120

Das benutze ich immer:

git clean -fdx

Bei einem sehr großen Projekt möchten Sie es möglicherweise einige Male ausführen.


@Martin Eines der Projekte, an denen ich arbeite, ist +8 Jahre alt und +80 Entwickler programmieren aktiv. Git kann es manchmal beim ersten Durchgang nicht bereinigen.
Oscar Fraxedas

1
Ich kann dies bestätigen, daher gilt dies auch im Jahr 2020. Wir arbeiten auch an einem großen Projekt und ich musste es 4-5 Mal ausführen, bis GIT keine weiteren zu löschenden Dateien mehr fand.
Turbolocust

90

Git-Clean ist das, wonach Sie suchen. Es wird verwendet, um nicht verfolgte Dateien aus dem Arbeitsbaum zu entfernen.


86

Falls erforderlich, um nicht verfolgte Dateien aus einem bestimmten Unterverzeichnis zu entfernen,

git clean -f {dir_path}

Und kombinierte Methode zum Löschen von nicht verfolgten Verzeichnissen / Dateien und ignorierten Dateien.

git clean -fxd {dir_path}

Danach haben Sie nur noch Dateien in geändert git status.


68

Entfernen Sie alle zusätzlichen Ordner und Dateien in diesem Repo + Submodul

Dies bringt Sie in den gleichen Zustand wie ein frischer Klon.

git clean -ffdx

Entfernen Sie alle zusätzlichen Ordner und Dateien in diesem Repo, jedoch nicht die Submodule

git clean -fdx

Entfernen Sie zusätzliche Ordner, aber keine Dateien (z. B. Build- oder Protokollordner).

git clean -fd

Entfernen Sie zusätzliche Ordner + ignorierte Dateien (aber keine neu hinzugefügten Dateien).

Wenn die Datei nicht ignoriert und noch nicht eingecheckt wurde, bleibt sie bestehen. Beachten Sie die Hauptstadt X.

git clean -fdX

Neuer interaktiver Modus

git clean

57

git clean -fd Entfernt das Verzeichnis

git clean -fX Entfernt ignorierte Dateien

git clean -fx Entfernt ignorierte und nicht ignorierte Dateien

kann alle oben genannten Optionen in Kombination als verwendet werden

git clean -fdXx

Weitere Hilfe finden Sie im Git-Handbuch


10
Der Befehl git clean -fdXxerzeugt die Fehlermeldung "fatal: -x und -X können nicht zusammen verwendet werden" (mit git-2.8). Für Ihren letzten Satz in Ihrer Antwort geben Sie bitte einen Link zum Git-Handbuch an. Cheers
Olibre

Führen Sie die beiden Befehle nacheinander aus: git clean -fdX, git clean -fdx
Uhr ZHONG

55

OK, das Löschen unerwünschter nicht verfolgter Dateien und Ordner ist gitin der Befehlszeile einfach. Gehen Sie einfach so vor:

git clean -fd

Überprüfen Sie dies noch einmal, da die Dateien und Ordner gelöscht werden, ohne dass ein Verlauf erstellt wird.

Auch in diesem Fall -fsteht für Kraft und-d steht für Verzeichnis ...

Wenn Sie also nur Dateien löschen möchten, können Sie nur Folgendes verwenden -f:

git clean -f

Wenn Sie (Verzeichnisse) und Dateien löschen möchten , können Sie nur nicht verfolgte Verzeichnisse und Dateien wie folgt löschen:

git clean -fd

Auch können Sie verwenden -x Flag auch verwenden, um die Dateien einzuschließen, die von git ignoriert werden. Dies wäre hilfreich, wenn Sie alles löschen möchten.

Und hinzufügen -i Flag , werden Sie von git um Erlaubnis gebeten, Dateien nacheinander unterwegs zu löschen.

Wenn Sie sich nicht sicher sind und zuerst die Dinge überprüfen möchten, fügen Sie hinzu -n Flag hinzu.

Verwenden -q Sie diese wenn Sie nach erfolgreichem Löschen keinen Bericht anzeigen möchten.

Ich habe auch das Bild unten erstellt, um es unvergesslicher zu machen, insbesondere habe ich viele Leute gesehen, die -fmanchmal verwirrt waren, um Ordner zu reinigen oder es irgendwie zu verwechseln !


Löschen unerwünschter nicht verfolgter Dateien und Ordner


Was ist mit diesem Bild?
Pacerier

37

Ein besserer Weg ist zu verwenden: Git Clean

git clean -d -x -f

Dadurch werden nicht verfolgte Dateien entfernt, einschließlich Verzeichnisse (-d)und Dateien, die von ignoriert werdengit (-x) .

Ersetzen Sie das -fArgument auch durch -n, um einen dry-runoder -ifür den interaktiven Modus auszuführen, und Sie erfahren, was entfernt wird.


25

Benutzerinteraktiver Ansatz:

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 für interaktiv
-f für force
-d für Verzeichnis
-x für ignorierte Dateien (bei Bedarf hinzufügen)

Hinweis: Fügen Sie -n oder --dry-run hinzu, um zu überprüfen, was es tun wird.


20

Ein Lifehack für eine solche Situation, die ich gerade erfunden und ausprobiert habe (das funktioniert perfekt):

git add .
git reset --hard HEAD

In acht nehmen! Stellen Sie sicher, dass Sie alle erforderlichen Änderungen (auch in nicht nicht verfolgten Dateien) festschreiben, bevor Sie dies ausführen .


3
Zumindest ist dies ein anderer Ansatz. :) Ein anderer Weg, der sich an die gelöschten Dateien im Reflog erinnern würde, aber nicht in irgendwelchen Zweigen, wäre:git add . git commit -m 'about to delete' git reset --hard HEAD~
joeytwiddle

2
noch schneller Weg istgit add . && git reset --hard HEAD
Thybzi

3
git add . && git reset --hard
Pleymor

Dies ist möglicherweise nicht das, was Sie möchten, wenn Sie auch Änderungen vornehmen möchten.
Lacostenycoder

@AlexanderMills git reset --hardsetzt alle nicht festgeschriebenen Änderungen, ABER UNTRACKED FILES, auf den Status des letzten Commits zurück. Deshalb brauchen wir zuerst git add .- das stellt alle nicht verfolgten Dateien
bereit

19

git clean -f -d -x $(git rev-parse --show-cdup)Wendet sauber auf das Stammverzeichnis an, unabhängig davon, wo Sie es in einem Repository-Verzeichnisbaum aufrufen. Ich benutze es die ganze Zeit, da es Sie nicht zwingt, den Ordner zu verlassen, in dem Sie gerade arbeiten, und es ermöglicht, direkt von Ihrem Standort aus zu bereinigen und festzuschreiben.

Achten Sie darauf , dass Fahnen -f, -d, -xIhren Bedürfnissen entsprechen:

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

Es gibt auch andere Flaggen, überprüfen Sie einfach git clean --help.


Übrigens können Sie einfach git clean {flags}
ausführen

19

Für mich hat nur folgendes funktioniert:

git clean -ffdx

In allen anderen Fällen wurde für einige Unterverzeichnisse die Meldung "Verzeichnis überspringen" angezeigt.


2
Vielen Dank. Ich habe das weggelassen -xund nur verwendet git clean -ffd, um das Löschen von Dateien im .gitignore zu vermeiden.
Feckmore

15

Wenn Sie nur die Dateien löschen möchten, die nach 'git status' als nicht verfolgt aufgeführt sind

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

Ich ziehe dies 'git clean' vor, da 'git clean' Dateien löscht, die von git ignoriert werden, sodass Ihr nächster Build alles neu erstellen muss und Sie möglicherweise auch Ihre IDE-Einstellungen verlieren.


3
Dadurch werden auch gültige Änderungen an nachverfolgten Dateien entfernt. Ich würde es nicht empfehlen.
code_dredd

2
Ja, Sie möchten zuerst Änderungen an nachverfolgten Dateien vornehmen.
Jazzdev

14

Um zu wissen, was vor dem eigentlichen Löschen gelöscht wird:

git clean -d -n

Es wird etwas ausgegeben wie:

Würde sample.txt entfernen

So löschen Sie alles, was in der Ausgabe des vorherigen Befehls aufgeführt ist:

git clean -d -f

Es wird etwas ausgegeben wie:

Beispiel.txt entfernen


11

Um die nicht verfolgten Dateien zu entfernen, sollten Sie zuerst den Befehl verwenden, um die Dateien anzuzeigen, die von der Bereinigung betroffen sind

git clean -fdn

Dies zeigt Ihnen die Liste der Dateien, die gelöscht werden. Um diese Dateien nun tatsächlich zu löschen, verwenden Sie diesen Befehl:

git clean -fd

11

Seien Sie vorsichtig, wenn Sie den Befehl "git clean" ausführen.

Verwenden Sie immer, -n bevor Sie den eigentlichen Befehl ausführen, da er Ihnen zeigt, welche Dateien entfernt werden würden.

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

Standardmäßig git cleanwerden nur nicht verfolgte Dateien entfernt, die nicht ignoriert werden. Dateien, die einem Muster in Ihrem .gitignore oder anderen ignorierten Dateien entsprechen, werden nicht entfernt. Wenn Sie diese Dateien auch entfernen möchten, können Sie -xdem Befehl clean ein hinzufügen .

git clean -f -d -x

-iMit dem Befehl clean steht auch ein interaktiver Modus zur Verfügung

git clean -x -i

Alternative

Wenn Sie nicht zu 100% sicher sind, dass das Löschen Ihrer nicht festgeschriebenen Arbeit sicher ist, können Sie stattdessen Stashing verwenden

git stash --all

Es löscht auch Ihr Verzeichnis, bietet Ihnen jedoch die Flexibilität, die Dateien jederzeit mithilfe von Stash mit Apply oder Pop abzurufen . Dann können Sie zu einem späteren Zeitpunkt Ihren Vorrat löschen mit:

git stash drop // or clean

2
Das Versteck ist eine gute Idee, aber Sie git stash save and type some comment as to what this stash was for
möchten


9

Der uggested-Befehl zum Entfernen nicht verfolgter Dateien aus Git-Dokumenten ist Git Clean

git clean - Entfernen Sie nicht verfolgte Dateien aus dem Arbeitsbaum

Vorgeschlagene Methode: Interativer Modus mithilfe von, git clean -i damit wir die Kontrolle darüber haben können. Lassen Sie die verbleibenden verfügbaren Optionen sehen.

Verfügbare Optionen:

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

Erläuterung:

1. -d

Entfernen Sie nicht verfolgte Verzeichnisse zusätzlich zu nicht verfolgten Dateien. Wenn ein nicht verfolgtes Verzeichnis von einem anderen Git-Repository verwaltet wird, wird es standardmäßig nicht entfernt. Verwenden Sie die Option -f zweimal, wenn Sie ein solches Verzeichnis wirklich entfernen möchten.

2. -f, --force

Wenn die Git-Konfigurationsvariable clean.requireForce nicht auf false gesetzt ist, wird die Ausführung von git clean abgelehnt, sofern nicht -f, -n oder -i angegeben wird.

3. -i, --interaktiv

Zeigen Sie, was getan werden würde, und bereinigen Sie Dateien interaktiv. Weitere Informationen finden Sie unter „Interaktiver Modus“.

4. -n, --dry-run

Entfernen Sie eigentlich nichts, sondern zeigen Sie nur, was getan werden würde.

5. -q, --quiet

Seien Sie ruhig, melden Sie nur Fehler, aber nicht die Dateien, die erfolgreich entfernt wurden.

6. -e, --exclude =

Zusätzlich zu den in .gitignore (pro Verzeichnis) und $ GIT_DIR / info / exclude gefundenen Mustern sollten diese Muster auch im Satz der geltenden Ignorierregeln enthalten sein.

7. -x

Verwenden Sie nicht die Standard-Ignorierregeln, die aus .gitignore (pro Verzeichnis) und $ GIT_DIR / info / exclude gelesen wurden, sondern verwenden Sie weiterhin die mit -e angegebenen Ignorierregeln. Dies ermöglicht das Entfernen aller nicht verfolgten Dateien, einschließlich Build-Produkte. Dies kann verwendet werden (möglicherweise in Verbindung mit dem Zurücksetzen von Git), um ein makelloses Arbeitsverzeichnis zum Testen eines sauberen Builds zu erstellen.

8. -X

Entfernen Sie nur Dateien, die von Git ignoriert werden. Dies kann nützlich sein, um alles von Grund auf neu zu erstellen, aber manuell erstellte Dateien beizubehalten.


Ich denke, Sie haben einen Tippfehler, uggestedaber das ist nur ein " uggestionlol
lacostenycoder

8

Mit dem normalen git cleanBefehl werden nicht verfolgte Dateien mit my nicht entfernt git version 2.9.0.windows.1.

$ git clean -fdx     # doesn't remove untracked files
$ git clean -fdx *   # Append star then it works!

7

Wir können lokale nicht verfolgte Dateien einfach aus dem aktuellen Git-Arbeitsbaum entfernen, indem wir die folgenden Git-Kommentare verwenden.

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

Beispiel:

git reset --hard HEAD

Links:

  1. https://git-scm.com/docs/git-reset
  2. Wie verwende ich 'git reset --hard HEAD', um zu einem vorherigen Commit zurückzukehren?
  3. Setzen Sie den lokalen Repository-Zweig so zurück, dass er dem HEAD des Remote-Repositorys entspricht
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html

Dadurch werden auch Änderungen entfernt, die für das Festschreiben bereitgestellt wurden, und nicht nur nicht verfolgte Dateien, die möglicherweise nicht Ihren Wünschen entsprechen.
kratzig

Funktioniert nicht: hinterlässt einige Dateien. git clean -ffdxist die Lösung
Eugene Gr. Philippov

7

Bereinigen Sie das Git-Repository und alle Submodule rekursiv

Der folgende Befehl löscht das aktuelle Git-Repository und alle seine Submodule rekursiv:

(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)

sicherlich sollte dies mit großer Vorsicht verwendet werden
lacostenycoder

6
git clean -f

entfernt die nicht verfolgten Dateien aus dem aktuellen Git

git clean -fd

Wenn Sie Verzeichnisse und Dateien entfernen möchten, werden nur nicht verfolgte Verzeichnisse und Dateien gelöscht


5

oh-my-zsh mit zsh bietet diese großartigen Aliase über das Git-Plugin. Sie können auch in Bash verwendet werden.

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

  • gclean Entfernt nicht verfolgte Verzeichnisse zusätzlich zu nicht verfolgten Dateien .
  • gpristineSetzen Sie die lokalen Änderungen hart zurück, entfernen Sie nicht verfolgte Verzeichnisse und nicht verfolgte Dateien und verwenden Sie nicht die Standard-Ignorierregeln, die aus .gitignore (pro Verzeichnis) und $ GIT_DIR / info / exclude gelesen wurden. Verwenden Sie jedoch weiterhin die mit den Optionen -e angegebenen Ignorierregeln. Dies ermöglicht das Entfernen aller nicht verfolgten Dateien, einschließlich Build-Produkte. Dies kann verwendet werden (möglicherweise in Verbindung mit dem Zurücksetzen von Git), um ein makelloses Arbeitsverzeichnis zum Testen eines sauberen Builds zu erstellen .

2
Vielen Dank für Ihr Feedback, meine Aussage war verwirrend. Ich wollte sagen, dass die hervorgehobenen Aliase automatisch mit oh-my-zsh kommen. Sie arbeiten offensichtlich großartig in bash. Ich habe meine Antwort bearbeitet, um dies widerzuspiegeln.
ZenLulz

4

Ich benutze gerne den git stashBefehl, später können Sie versteckte Dateien und Änderungen erhalten. git cleanist auch eine gute Option, hängt aber völlig von Ihren Anforderungen ab. Hier ist die Erklärung von Git Stash und Git Clean, 7.3 Git Tools - Stashing and Cleaning

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.