Frage

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

War es hilfreich?

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 oder git clean -fd
  • Zum Entfernen ignoriert Dateien, führen git clean -f -X oder git clean -fX
  • So entfernen Sie ignoriert und nicht ignoriert Dateien, führen git clean -f -x oder git 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.

siehe

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!


löscht unerwünschte untracked Dateien und Ordner

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 werden
git 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:

  1. https://git-scm.com/docs/git-reset
  2. Wie verwende ich 'git --hard HEAD reset' zu einem vorherigen zurückzukehren begehen?
  3. lokale Repository Niederlassung zurücksetzen nur um wie Remote-Repository HEAD
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html
  

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.

  1. So reinigen Sie Dateien nur [Ordner werden nicht aufgelistet und werden nicht gereinigt werden]: $ git clean -i

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top