Wie lokale (untracked) Dateien aus dem aktuellen Git arbeitet Baum entfernen?
-
09-06-2019 - |
Frage
Wie Sie untracked lokale Dateien aus Ihrem aktuellen Arbeitsbaum löschen?
Lösung
Gemäß der Git-Dokumentation git sauber
Entfernen untracked Dateien aus dem Arbeitsbaum
Schritt 1 ist zu zeigen, was mit Hilfe der -n
Option gelöscht werden:
# Print out the list of files which will be removed (dry run)
git clean -n
Sauber Schritt - Achtung: dies Dateien löschen :
# Delete the files from the repository
git clean -f
- So entfernen Sie Verzeichnisse, führen
git clean -f -d
odergit clean -fd
- Zum Entfernen ignoriert Dateien, führen
git clean -f -X
odergit clean -fX
- So entfernen Sie ignoriert und nicht ignoriert Dateien, führen
git clean -f -x
odergit clean -fx
Hinweis der Fall Unterschied auf dem X
für die beiden letzteren Befehle.
Wenn clean.requireForce
auf „true“ (Standardeinstellung) in Ihrer Konfiguration festgelegt ist, muss man -f
sonst nichts angeben, wird tatsächlich passieren.
Auch die git-clean
Dokumentation für weitere Informationen.
Optionen
-f
,--force
Wenn das Git-Konfigurationsvariable clean.requireForce ist nicht auf falsch, git sauber wird sich weigern, es sei denn, gegeben
-f
,-n
oder-i
auszuführen.
-x
Verwenden Sie den Standard nicht Regeln von .gitignore lesen ignorieren (per Verzeichnis) und
$GIT_DIR/info/exclude
, aber immer noch die ignorieren Regeln gegeben mit-e
Optionen. Auf diese Weise können alle untracked Dateien zu entfernen, einschließlich der Produkte bauen. Dies kann verwendet werden (möglicherweise in Verbindung mit git reset) einer unberührten Arbeitsverzeichnis erstellen sauber zu testen bauen.
-X
Entfernen Sie nur Dateien von Git ignoriert. Dies kann nützlich sein für den Wiederaufbau alles von Grund auf neu, aber halten Sie Dateien manuell erstellt.
-n
,-dry-run
Sie eigentlich nichts entfernen, nur zeigen, was getan werden würde.
-d
Entfernen untracked Verzeichnisse zusätzlich zu untracked Dateien. Wenn ein untracked Verzeichnis, das von einer anderen Git-Repository verwaltet wird, ist es standardmäßig nicht entfernt. Verwenden Sie
-f
Option zweimal, wenn Sie wirklich wollen Entfernen eines solchen Verzeichnis.
Andere Tipps
Verwenden Sie git clean -f -d
, um sicherzustellen, dass Verzeichnisse werden ebenfalls entfernt.
Sie können dann überprüfen, ob Ihre Dateien wirklich mit git status
verschwunden sind.
Ich bin überrascht, niemand erwähnte dies vor:
git clean -i
Das steht für interaktive und Sie erhalten einen schnellen Überblick über das bekommen, was Ihnen die Möglichkeit werden wird gelöscht bietet die betroffenen Dateien auf / Ausschluss. Insgesamt immer noch schneller als den obligatorischen --dry-run
vor der eigentlichen Reinigung ausgeführt wird.
Du musst in einem -d
werfen, wenn Sie auch um leere Ordner zu nehmen. Am Ende macht es für einen schönen Alias:
git iclean
aber sagen, dass die zusätzliche Hand Halten von interaktiven Befehle können für erfahrene Benutzer ermüdend sein. In diesen Tagen benutze ich nur die bereits erwähnte git clean -fd
Wenn untracked Verzeichnis ein Git Repository seiner eigenen (z Modul), müssen Sie -f
verwenden zweimal:
git clean -d -f -f
Einfache Way untracked Dateien entfernen
Um alle untracked Dateien zu entfernen, die einfache Weg ist, um hinzufügen alle von ihnen zuerst und Zurücksetzen der Repo , wie unten
git add --all
git reset --hard HEAD
Ich mag git stash push -u
weil du sie alle mit git stash pop
rückgängig machen können.
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 save
wird zugunsten push
veraltet. Thanks @ Skript-Wolf.
Das ist, was ich immer wie folgt:
git clean -fdx
Für ein sehr großes Projekt, das Sie vielleicht wollen sie ein paar Mal laufen zu lassen.
git-clean ist, was Sie sind auf der Suche nach. Es wird verwendet, untracked Dateien aus dem Arbeits Baum zu entfernen.
Bei Bedarf untracked Dateien aus bestimmtem Unterverzeichnis zu entfernen,
git clean -f {dir_path}
Und kombinierte Art und Weise untracked dir / Dateien und ignoriert Dateien zu löschen.
git clean -fxd {dir_path}
nach diesen Dateien nur in git status
geändert haben wird.
git clean -fd
entfernt Verzeichnis
git clean -fX
Entfernt ignoriert Dateien
git clean -fx
Entfernt ignoriert und nicht-ignorierten Dateien
können alle oben genannten Optionen in Kombination als
verwendet werden git clean -fdXx
Check git Handbuch für weitere Hilfe
Entfernen Sie alle zusätzlichen Ordner und Dateien in diesem Repo + Submodule
Diese bekommt man in demselben Zustand wie frisch Klon.
git clean -ffdx
Entfernen Sie alle zusätzlichen Ordner und Dateien in diesem Repo aber nicht seine Submodule
git clean -fdx
Entfernen nur zusätzliche Ordner aber keine Dateien (ex. Bauen Ordner)
git clean -fd
Entfernen Sie die zusätzlichen Ordner + ignoriert Dateien (aber nicht alle neu hinzugefügten Dateien)
Wenn die Datei nicht außer Acht gelassen wurde und noch nicht eingecheckt in dann bleibt es. Beachten Sie die Hauptstadt X.
git clean -fdX
Neuer interaktiver Modus
git clean
OK Löschen unerwünschte untracked Dateien und Ordner sind einfach mit git
in der Befehlszeile, tun Sie es einfach wie folgt aus:
git clean -fd
Überprüfen , bevor Sie es, wie es die Dateien und Ordner löschen, ohne jede Geschichte zu machen ...
Auch in diesem Fall -f
steht für Kraft und -d
steht für Verzeichnis ...
Also, wenn Sie Dateien nur löschen wollen, können Sie -f
nur:
git clean -f
Wenn Sie (Verzeichnisse) löschen mögen, und Dateien können Sie löschen nur untracked Verzeichnisse und Dateien wie folgen aus:
git clean -fd
Sie können aber auch -x
Flag für die Aufnahme der Dateien verwenden, die von git ignoriert werden. Dies wäre hilfreich, wenn Sie alles löschen möchten.
Und das Hinzufügen -i
Flagge, macht git Sie um Erlaubnis zu fragen für Dateien nacheinander auf dem Sprung zu löschen.
Wenn Sie nicht sicher und wollen zuerst die Dinge überprüfen, -n
Flag hinzuzufügen.
Verwenden -q
wenn Sie wollen keinen Bericht nach erfolgreicher Löschung sehen.
Ich schaffe auch das Bild unten, um es speicherbaren, speziell habe ich viele Menschen gesehen verwechseln -f
für Ordner Reinigung manchmal oder mischen irgendwie!
Eine bessere Art und Weise zu verwenden: git sauber
git clean -d -x -f
Dies entfernt untracked Dateien, einschließlich Verzeichnissen und Dateien (-d)
von git (-x)
ignoriert.
Auch ersetzt das -f
Argument mit -n
einem dry-run
oder -i
für die interaktiven Modus auszuführen, und es wird Ihnen sagen, was entfernt werden.
Benutzer interaktiver 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 interaktive
-f für Kraft
-d für Verzeichnis
-x für ignoriert Dateien (hinzufügen, wenn erforderlich)
Hinweis: In -n oder - Trockenlauf , um nur zu überprüfen, was es tut
git clean -f -d -x $(git rev-parse --show-cdup)
gilt sauber in das Stammverzeichnis, egal wo Sie es in einem Repository Verzeichnisbaum nennen. Ich benutze es die ganze Zeit, wie es Sie nicht zwingen, den Ordner zu verlassen, in dem Sie jetzt arbeiten und ermöglichen es direkt von dem Ort, zu reinigen und zu begehen, wo Sie sind.
Seien Sie sicher, dass Flaggen -f
, -d
, auf Ihre Bedürfnisse -x
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 andere Flaggen ebenfalls zur Verfügung, nur überprüfen git clean --help
.
Für mich funktionierte nur folgende:
git clean -ffdx
In allen anderen Fällen, ich war immer Meldung "Skipping Directory" für einige Unterverzeichnisse.
A Lifehack für eine solche Situation, die ich gerade erfunden und ausprobiert (das funktioniert einwandfrei):
git add .
git reset --hard HEAD
Achtung! Achten Sie darauf, begehen alle erforderlichen Änderungen (auch in nicht-untracked Dateien) vor der Durchführung dieses .
Wenn Sie wollen einfach nur die Dateien löschen als untracked aufgeführt von ‚git status‘
git stash save -u
git stash drop "stash@{0}"
Ich ziehe dies ‚git clean‘, weil ‚git clean‘ werden die Dateien löschen von git ignoriert, so wird die nächste Build alles neu aufbauen und Sie können Ihre IDE-Einstellungen verlieren.
Um zu wissen, was vor dem eigentlichen Löschen gelöscht werden:
git clean -d -n
Es wird Ausgang so etwas wie:
Würde entfernen sample.txt
Um alles in der Ausgabe des vorherigen Befehls aufgelistet zu löschen:
git clean -d -f
Es wird Ausgang so etwas wie:
Entfernen sample.txt
Um die untracked Dateien entfernen Sie ersten Befehl verwenden sollten die Dateien anzuzeigen, die durch die Reinigung
betroffen sein werdengit clean -fdn
Dies wird Ihnen die Liste der Dateien anzuzeigen, die gelöscht werden soll. Nun, tatsächlich löscht diese Dateien verwenden Sie diesen Befehl:
git clean -fd
Seien Sie vorsichtig beim `git clean` Befehl ausgeführt wird.
Verwenden Sie immer -n
vor den eigentlichen Befehl ausgeführt wird, wie es Ihnen zeigen, welche Dateien entfernt bekommen würde.
git clean -n -d
git clean -f -d
In der Standardeinstellung git clean
entfernen wird nur untracked Dateien, die nicht ignoriert werden. Jede Datei, die ein Muster in Ihrem .gitignore oder andere ignorieren Dateien übereinstimmt, wird nicht entfernt. Wenn Sie diese Dateien entfernen möchten, können Sie einen -x
zum sauberen Befehl hinzuzufügen.
git clean -f -d -x
Es gibt auch die interaktiven Modus verfügbar -i
mit dem sauberen Befehl
git clean -x -i
Alternativ
Wenn Sie nicht 100% sicher sind, dass das Löschen Ihrer uncommitted Arbeit sicher ist, könnten Sie stashing anstelle
git stash --all
Es wird auch Ihr Verzeichnis klar, aber gibt Ihnen Flexibilität, um die Dateien an jedem beliebigen Punkt in der Zeit mit Stash mit Anwendung oder Pop abgerufen werden. Dann zu einem späteren Punkt, den Sie Ihr Versteck löschen könnten mit:
git stash drop // or clean
Normaler git clean
Befehl nicht entfernen untracked Dateien mit meinem git version 2.9.0.windows.1
.
$ git clean -fdx # doesn't remove untracked files
$ git clean -fdx * # Append star then it works!
git clean -f to remove untracked files from working directory.
ich einige Grundlagen abgedeckt haben hier in meinem Blog, git-Intro-basic-Befehle
uggested Befehl für Untracked Dateien von git docs Entfernen ist git sauber
git sauber - Entfernen untracked Dateien aus dem Arbeits Baum
Empfohlene Methode: Interative-Modus durch git clean -i
mit
so können wir die Kontrolle über sie haben. siehe restliche verfügbare Optionen lassen.
Optionen:
git clean
-d -f -i -n -q -e -x -X (can use either)
Erklärung:
1. -d
Entfernen untracked Verzeichnisse zusätzlich zu untracked Dateien. Wenn ein untracked Verzeichnis, das von einer anderen Git-Repository verwaltet wird, es ist standardmäßig nicht entfernt. Verwenden Sie die Option -f zweimal, wenn Sie wirklich entfernen möchten ein solches Verzeichnis.
2. -f, --force
Wenn die Git-Konfigurationsvariable clean.requireForce nicht auf false gesetzt ist, git sauber wird sich weigern, es sei denn, gegeben -f ausführen, -n oder -i.
3. -i, --interactive
Zeigen Sie, was getan und saubere Dateien interaktiv würde. Siehe „Interaktiver Modus“ für weitere Einzelheiten.
4. -n, --dry-run
Sie eigentlich nichts entfernen, nur zeigen, was getan werden würde.
5. -q, --quiet
ruhig sein, nur melden Sie Fehler, aber nicht die Dateien, die erfolgreich entfernt werden.
6. -e, --exclude =
Zusätzlich zu den in .gitignore gefunden (pro Verzeichnis) und $ GIT_DIR / info / ausschließen, sollten auch diese Muster in die sein Menge der ignorieren Regeln in Kraft ist.
7. -x
Verwenden Sie nicht die Standardregeln von .gitignore lesen ignorieren (pro Verzeichnis) und $ GIT_DIR / info / ausschließen, aber immer noch die ignorieren Regeln gegeben mit -e-Optionen. Auf diese Weise können alle untracked Dateien zu entfernen, einschließlich der Produkte bauen. Dies kann verwendet werden (möglicherweise in Verbindung mit git reset) einer unberührten Arbeitsverzeichnis erstellen einen bereinigter Build zu testen.
8. -X
Entfernen Sie nur Dateien von Git ignoriert. Dies kann nützlich sein, alles von Grund auf neu zu erstellen, aber halten Sie manuell erstellten Dateien.
Wir können mit unter git Kommentaren lokale untracked Dateien aus den aktuellen git Arbeits Baum leicht entfernt werden.
git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]
Beispiel:
git reset --hard HEAD
Links:
Reinigen Sie git-Repository und alle Submodule rekursiv
Der folgende Befehl reinigen die aktuelle git-Repository und alle seine Submodule rekursiv:
(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)
oh-my-zsh mit zsh den großen Aliase über die Git-Plugin zur Verfügung stellt. Sie können auch in bash verwendet werden.
gclean='git clean -fd'
gpristine='git reset --hard && git clean -dfx'
-
gclean
entfernt untracked Verzeichnisse zusätzlich zu untracked Dateien . -
gpristine
hart daran, die lokalen Änderungen zurückgesetzt, entfernen untracked Verzeichnisse, untracked Dateien und verwenden Sie nicht die Standardregeln von .gitignore lesen ignorieren (pro Verzeichnis) und GIT_DIR / Infos $ / ausschließen, aber immer noch die Regeln mit -en Optionen gegeben ignorieren. Auf diese Weise können alle untracked Dateien zu entfernen, einschließlich der Produkte bauen. Dies kann (gegebenenfalls in Verbindung mit git reset) verwendet werden, um eine unberührten Arbeitsverzeichnis zu erstellen einen bereinigter Build zu testen .
git clean -f
wird die untracked Dateien aus dem aktuellen git entfernen
git clean -fd
Wenn Sie Verzeichnisse und Dateien entfernen möchten, wird dies nur löschen untracked Verzeichnisse und Dateien
Hinweis: Zuerst in das Verzeichnis navigieren und Kasse den Zweig Sie reinigen möchten
. -i
interaktiver Modus und es wird Ihnen sagen, was entfernt werden und Sie können eine Aktion aus der Liste auswählen.
-
So reinigen Sie Dateien nur [Ordner werden nicht aufgelistet und werden nicht gereinigt werden]:
$ git clean -i
-
So reinigen Sie Dateien und Ordner :
$ git clean -d -i
-d
einschließlich Verzeichnisse.
Wenn Sie c
aus der Liste auswählen. Die Dateien / Ordner gelöscht werden, die nicht verfolgt werden und wird auch Entfernen von Dateien / Ordner, die Sie Chaos-up. *
Zum Beispiel: Wenn Sie den Ordner in der Remote-restrukturieren und die Änderungen an Ihrem lokalen Computer ziehen. Dateien / Ordner, die ursprünglich von anderen erstellt werden, werden in den letzten Ordner und in den neuen, die Sie restrukturieren.