8129 Stimmen

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

Wie löschen Sie nicht verfolgte lokale Dateien aus Ihrem aktuellen Arbeitsbaum?

104 Stimmen

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

38 Stimmen

Hinweis: Wenn Sie nur die algunos nicht verfolgte Dateien, aber nicht alle von ihnen , git clean hat jetzt eine interaktiv Modus! Siehe meine Antwort auf diese andere Frage : git 1.8.4+

0 Stimmen

Bevor Sie eine neue Antwort schreiben, bedenken Sie, dass es bereits mehr als 25 Antworten auf diese Frage gibt. Vergewissern Sie sich, dass Ihre Antwort einen Beitrag leistet, der nicht in den vorhandenen Antworten enthalten ist

9809voto

git-clean - Nicht verfolgte Dateien aus dem Arbeitsbaum entfernen

Synopse

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

Beschreibung

Bereinigt den Arbeitsbaum durch rekursives Entfernen von Dateien, die nicht unter Versionskontrolle stehen, ausgehend vom aktuellen Verzeichnis .

Normalerweise werden nur Dateien entfernt, die Git unbekannt sind, aber wenn die -x angegeben ist, werden auch ignorierte Dateien entfernt. Dies kann z. B. nützlich sein, um alle Build-Produkte zu entfernen.

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


Schritt 1 besteht darin, zu zeigen, was gelöscht werden soll, indem man die -n Option:

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

Sauberer Schritt - Achtung: dies löscht Dateien :

# Delete the files from the repository
git clean -f
  • Um Verzeichnisse zu entfernen, führen Sie git clean -f -d o git clean -fd
  • Um ignorierte Dateien zu entfernen, führen Sie git clean -f -X o git clean -fX
  • Um ignorierte und nicht-ignorierte Dateien zu entfernen, führen Sie git clean -f -x o git clean -fx

Hinweis der Fallunterschied auf der X für die beiden letztgenannten Befehle.

Si clean.requireForce in Ihrer Konfiguration auf "true" (Standard) gesetzt ist, müssen Sie angeben -f sonst wird tatsächlich nichts passieren.

Siehe wiederum die git-clean Dokumentationen für weitere Informationen.


Optionen

-f , --force

Wenn die Git-Konfigurationsvariable clean.requireForce nicht auf false gesetzt ist, weigert sich git clean, ausgeführt zu werden, es sei denn, die Variable -f , -n o -i .

-x

Verwenden Sie nicht die Standard-Ignore-Regeln, die aus .gitignore (pro Verzeichnis) und $GIT_DIR/info/exclude aber verwenden Sie trotzdem die Ignorierfunktion Regeln, die mit -e Optionen. Dies ermöglicht das Entfernen aller nicht getrackten Dateien, einschließlich der Build-Produkte. Dies kann verwendet werden (möglicherweise in Verbindung mit mit git reset) verwendet werden, um ein unberührtes Arbeitsverzeichnis zum Testen eines sauberen Build zu testen.

-X

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

-n , --dry-run

Entfernen Sie nicht wirklich etwas, sondern zeigen Sie nur, was getan werden würde.

-d

Entfernen Sie nicht verfolgte Verzeichnisse zusätzlich zu den nicht verfolgten Dateien. Wenn ein nicht nachverfolgte Verzeichnis von einem anderen Git-Repository verwaltet wird, wird es standardmäßig nicht entfernt. verwenden -f Option zweimal, wenn Sie wirklich wollen ein solches Verzeichnis entfernen wollen.

355 Stimmen

git clean -f funktioniert nur in dem Verzeichnis, in dem es aufgerufen wird (und in Unterverzeichnissen). Wenn Sie die gesamte Arbeitskopie bereinigen wollen, sollten Sie das Programm in seinem Stammverzeichnis aufrufen.

25 Stimmen

Es werden auch alle Dateien in .gitignore entfernt. Ich muss nur Dateien/Ordner löschen, die neu sind und sich nicht in .gitignore befinden.

31 Stimmen

@Kostanos Wenn Sie Dateien, die sich in .gitignore befinden, nicht entfernen wollen, dann geben Sie nicht das Flag -x an.

1277voto

robert.berger Punkte 12431

Verwenden Sie git clean -f -d um sicherzustellen, dass Verzeichnisse werden ebenfalls entfernt.

  1. Entfernen Sie nicht wirklich etwas, sondern zeigen Sie nur, was getan werden würde.

    git clean -n

    ou

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

    git clean -fd

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

129 Stimmen

Wie bereits erwähnt, ist es gut, einen Trockenlauf mit git clean -n -d

18 Stimmen

Das Gleiche ist zu tun git clean -nd y git clean -fd .

0 Stimmen

Verwendung von -n o --dry-run allein nichts bewirken. Wie bei @Ms01 und @Micer müssen Sie Folgendes hinzufügen -d wie in git clean -nd um zu zeigen, was sie entfernen wird.

567voto

SystematicFrank Punkte 15587

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

git clean -i

Das steht für interaktiv und Sie erhalten einen schnellen Überblick über die zu löschenden Dateien, wobei Sie die Möglichkeit haben, die betroffenen Dateien ein- oder auszuschließen. Insgesamt immer noch schneller als die obligatorische Ausführung der --dry-run vor der eigentlichen Reinigung.

Sie müssen eine -d wenn Sie sich auch um leere Ordner kümmern wollen. Am Ende ergibt das einen schönen Alias:

git iclean

Allerdings kann das zusätzliche Halten der Hand bei interaktiven Befehlen für erfahrene Benutzer ermüdend sein. Heutzutage verwende ich nur noch die bereits erwähnten git clean -fd

19 Stimmen

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

0 Stimmen

Ich mag das - ich fühle mich wohler, wenn ich es in meinem Bash-Verlauf habe, als eine der anderen Optionen, weil es keine große Sache ist, wenn ich versehentlich ctrl-r oder ctrl-p dazu benutze.

1 Stimmen

Könnte es sein, dass git clean -i funktioniert nur, wenn es von der Wurzel der Arbeitskopie aus aufgerufen wird?

418voto

Fire Lancer Punkte 28368

0 Stimmen

Git clean -f 'untracked file path'

402voto

Thanga Punkte 7305

Einfacher Weg zum Entfernen nicht verfolgter Dateien

Um alle nicht verfolgten Dateien zu entfernen, muss die einfache Weg ist zuerst alle hinzufügen y das Repo zurücksetzen wie unten

git add --all
git reset --hard HEAD

13 Stimmen

Sie können ersetzen git add --all por git add . . So können Sie es auf kürzerem Weg in einer Zeile tun git add . && git reset --hard HEAD ( be sehr vorsichtig mit diesem Befehl) .

12 Stimmen

Denn git clean löscht offenbar auch alles, was ignoriert wird. Es löschte gerade meine node_modules Ordner. Auf diese Weise würden zunächst alle Dateien mit Ausnahme der ignorierten Dateien bereitgestellt und dann durch Zurücksetzen gelöscht. Ignorierte Dateien werden nicht berührt.

5 Stimmen

@Andreas, bei mir werden ignorierte Dateien nicht gelöscht (Git 2.14.1). Sie sollten Folgendes ausführen git clean -n bevor Sie die eigentliche Löschung vornehmen (oder verwenden Sie git clean -i ).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X