Wie löscht man nicht verfolgte lokale Dateien aus Ihrem aktuellen Arbeitsbaum?
git
branch
git-branch
Schreibgeschützt
quelle
quelle
git clean
verfügt dies jetzt über einen interaktiven Modus! Siehe meine Antwort auf diese andere Frage : Git 1.8.4+git clean
die 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, wasgit clean
gelöscht oder verwendet wird--dry-run
, damit es Ihnen mitteilt, ohne etwas zu löschen.rm files-to-be-deleted
Antworten:
Schritt 1 besteht darin, zu zeigen, was mit der folgenden
-n
Option gelöscht wird :Clean Step - Vorsicht: Dadurch werden Dateien gelöscht :
git clean -f -d
oder aus, um Verzeichnisse zu entfernengit clean -fd
git clean -f -X
oder aus, um ignorierte Dateien zu entfernengit clean -fX
git clean -f -x
oder aus, um ignorierte und nicht ignorierte Dateien zu entfernengit clean -fx
Beachten Sie den Fallunterschied
X
bei den beiden letztgenannten Befehlen.Wenn
clean.requireForce
in Ihrer Konfiguration "true" (Standardeinstellung) festgelegt ist, muss angegeben werden, dass-f
sonst nichts passiert.git-clean
Weitere Informationen finden Sie in den Dokumenten.quelle
git clean -f
funktioniert 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.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 :/
Verwenden Sie
git clean -f -d
diese Option , um sicherzustellen, dass auch Verzeichnisse entfernt werden.Entfernen Sie eigentlich nichts, sondern zeigen Sie nur, was getan werden würde.
oder
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
-f
Option zweimal, wenn Sie ein solches Verzeichnis wirklich entfernen möchten.Sie können dann überprüfen, ob Ihre Dateien wirklich verschwunden sind
git status
.quelle
git clean -n -d
git clean -nd
undgit clean -fd
.Ich bin überrascht, dass dies noch niemand erwähnt hat:
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-run
vor der eigentlichen Reinigung.Sie müssen ein werfen,
-d
wenn Sie sich auch um leere Ordner kümmern möchten. Am Ende ergibt sich ein netter Alias:Abgesehen davon kann das zusätzliche Halten interaktiver Befehle für erfahrene Benutzer anstrengend sein. In diesen Tagen benutze ich nur das bereits erwähnte
git clean -fd
quelle
git clean -i
nur funktioniert, wenn es vom Stammverzeichnis der Arbeitskopie aufgerufen wird?git-clean
- Entfernen Sie nicht verfolgte Dateien aus dem Arbeitsbaumquelle
Wenn das nicht verfolgte Verzeichnis ein eigenes Git-Repository ist (z. B. ein Submodul), müssen Sie es
-f
zweimal verwenden:git clean -d -f -f
quelle
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
quelle
git add --all
durchgit add .
. Sie können dies also in kürzerer Zeit online tungit add . && git reset --hard HEAD
(seien Sie mit diesem Befehl sehr vorsichtig) .git clean
?git clean
anscheinend wird auch alles gelöscht, was ignoriert wird. Es hat gerade meinennode_modules
Ordner 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.git clean -n
trotzdem ausführen, bevor Sie das eigentliche Löschen (oder Verwendengit clean -i
) durchführen.git clean
Löscht ignorierte Dateien nur, wenn Sie die Option-x
oder verwenden-X
. Andernfalls werden nur nicht verfolgte Dateien gelöscht.Ich mag,
git stash push -u
weil Sie sie alle mit rückgängig machen könnengit 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/338986EDIT2:
git stash save
wird zugunsten von abgelehntpush
. Danke @ script-wolf.quelle
-u
ist äquivalent zu--include-untracked
. Sie finden eine Hilfe beigit help stash
.save
Option wurde zugunsten von abgelehntpush
, was dasselbe tut, aber mehr. Sie können mehr hier lesen, /programming/44680028/whats-the-difference-between-git-stash-save-and-git-stash-push/44681952Das benutze ich immer:
Bei einem sehr großen Projekt möchten Sie es möglicherweise einige Male ausführen.
quelle
Git-Clean ist das, wonach Sie suchen. Es wird verwendet, um nicht verfolgte Dateien aus dem Arbeitsbaum zu entfernen.
quelle
Falls erforderlich, um nicht verfolgte Dateien aus einem bestimmten Unterverzeichnis zu entfernen,
Und kombinierte Methode zum Löschen von nicht verfolgten Verzeichnissen / Dateien und ignorierten Dateien.
Danach haben Sie nur noch Dateien in geändert
git status
.quelle
Entfernen Sie alle zusätzlichen Ordner und Dateien in diesem Repo + Submodul
Dies bringt Sie in den gleichen Zustand wie ein frischer Klon.
Entfernen Sie alle zusätzlichen Ordner und Dateien in diesem Repo, jedoch nicht die Submodule
Entfernen Sie zusätzliche Ordner, aber keine Dateien (z. B. Build- oder Protokollordner).
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.
Neuer interaktiver Modus
quelle
git clean -fd
Entfernt das Verzeichnisgit clean -fX
Entfernt ignorierte Dateiengit clean -fx
Entfernt ignorierte und nicht ignorierte Dateienkann alle oben genannten Optionen in Kombination als verwendet werden
git clean -fdXx
Weitere Hilfe finden Sie im Git-Handbuch
quelle
git clean -fdXx
erzeugt 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. CheersOK, das Löschen unerwünschter nicht verfolgter Dateien und Ordner ist
git
in der Befehlszeile einfach. Gehen Sie einfach so vor:Überprüfen Sie dies noch einmal, da die Dateien und Ordner gelöscht werden, ohne dass ein Verlauf erstellt wird.
Auch in diesem Fall
-f
steht 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
:Wenn Sie (Verzeichnisse) und Dateien löschen möchten , können Sie nur nicht verfolgte Verzeichnisse und Dateien wie folgt löschen:
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
-f
manchmal verwirrt waren, um Ordner zu reinigen oder es irgendwie zu verwechseln !quelle
Ein besserer Weg ist zu verwenden: Git Clean
Dadurch werden nicht verfolgte Dateien entfernt, einschließlich Verzeichnisse
(-d)
und Dateien, die von ignoriert werdengit (-x)
.Ersetzen Sie das
-f
Argument auch durch-n
, um einendry-run
oder-i
für den interaktiven Modus auszuführen, und Sie erfahren, was entfernt wird.quelle
Benutzerinteraktiver Ansatz:
-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.
quelle
Ein Lifehack für eine solche Situation, die ich gerade erfunden und ausprobiert habe (das funktioniert perfekt):
In acht nehmen! Stellen Sie sicher, dass Sie alle erforderlichen Änderungen (auch in nicht nicht verfolgten Dateien) festschreiben, bevor Sie dies ausführen .
quelle
git add .
git commit -m 'about to delete'
git reset --hard HEAD~
git add . && git reset --hard HEAD
git add . && git reset --hard
git reset --hard
setzt alle nicht festgeschriebenen Änderungen, ABER UNTRACKED FILES, auf den Status des letzten Commits zurück. Deshalb brauchen wir zuerstgit add .
- das stellt alle nicht verfolgten Dateiengit 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
,-x
Ihren Bedürfnissen entsprechen:Es gibt auch andere Flaggen, überprüfen Sie einfach
git clean --help
.quelle
Für mich hat nur folgendes funktioniert:
In allen anderen Fällen wurde für einige Unterverzeichnisse die Meldung "Verzeichnis überspringen" angezeigt.
quelle
-x
und nur verwendetgit clean -ffd
, um das Löschen von Dateien im .gitignore zu vermeiden.Wenn Sie nur die Dateien löschen möchten, die nach 'git status' als nicht verfolgt aufgeführt sind
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.
quelle
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
quelle
Um die nicht verfolgten Dateien zu entfernen, sollten Sie zuerst den Befehl verwenden, um die Dateien anzuzeigen, die von der Bereinigung betroffen sind
Dies zeigt Ihnen die Liste der Dateien, die gelöscht werden. Um diese Dateien nun tatsächlich zu löschen, verwenden Sie diesen Befehl:
quelle
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.Standardmäßig
git clean
werden 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-x
dem Befehl clean ein hinzufügen .-i
Mit dem Befehl clean steht auch ein interaktiver Modus zur VerfügungAlternative
Wenn Sie nicht zu 100% sicher sind, dass das Löschen Ihrer nicht festgeschriebenen Arbeit sicher ist, können Sie stattdessen Stashing verwenden
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:
quelle
git stash save and type some comment as to what this stash was for
git clean -f to remove untracked files from working directory.
Ich habe hier in meinem Blog einige Grundlagen behandelt, git-intro-basic-Befehle
quelle
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:
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.
quelle
uggested
aber das ist nur ein "uggestion
lolMit dem normalen
git clean
Befehl werden nicht verfolgte Dateien mit my nicht entferntgit version 2.9.0.windows.1
.quelle
Wir können lokale nicht verfolgte Dateien einfach aus dem aktuellen Git-Arbeitsbaum entfernen, indem wir die folgenden Git-Kommentare verwenden.
Beispiel:
Links:
quelle
git clean -ffdx
ist die Lösungquelle
entfernt die nicht verfolgten Dateien aus dem aktuellen Git
Wenn Sie Verzeichnisse und Dateien entfernen möchten, werden nur nicht verfolgte Verzeichnisse und Dateien gelöscht
quelle
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 .gpristine
Setzen 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 .quelle
bash
. Ich habe meine Antwort bearbeitet, um dies widerzuspiegeln.Ich benutze gerne den
git stash
Befehl, später können Sie versteckte Dateien und Änderungen erhalten.git clean
ist 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 Cleaningquelle