remote Wie entferne ich lokale(nicht nachverfolgte) Dateien aus dem aktuellen Git-Arbeitsbaum?




git delete branch (24)

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


Für mich nur folgendes gearbeitet:

git clean -ffdx

In allen anderen Fällen erhielt ich für einige Unterverzeichnisse die Meldung "Überspringverzeichnis" .


git clean -f

entfernt die nicht aufgezeichneten 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


OK, das Löschen unerwünschter, nicht nachverfolgter Dateien und Ordner ist mit git in der Befehlszeile einfach. Gehen Sie dazu folgendermaßen vor:

git clean -fd

Bevor Sie dies tun, sollten Sie dies noch einmal überprüfen , da die Dateien und Ordner gelöscht werden, ohne dass ein Protokoll erstellt wird.

-f steht auch in diesem Fall für force und -d für directory ...

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

git clean -f

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

git clean -fd

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

Wenn Sie -i hinzufügen, werden Sie von git um Erlaubnis gefragt, ob Sie Dateien einzeln löschen möchten.

Wenn Sie sich nicht sicher sind und zuerst prüfen möchten, fügen Sie das Flag -n .

Verwenden Sie -q wenn nach dem erfolgreichen Löschen kein Bericht angezeigt werden soll.

Ich erstelle das Bild unten, um es einprägsamer zu machen. Insbesondere habe ich gesehen, dass viele Leute -f für das Reinigen des Ordners verwirren oder es irgendwie vermischen!



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 interaktive
-f für Gewalt
-d für das Verzeichnis
-x für ignorierte Dateien (ggf. hinzufügen)

Hinweis: Fügen Sie -n oder --dry-run hinzu, um nur zu prüfen, was getan wird.


Laut Git-Dokumentation git clean

Entfernen Sie nicht aufgespürte Dateien aus dem Arbeitsbaum

Schritt 1 zeigt, was mit der Option -n gelöscht wird:

git clean -n

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

git clean -f
  • Um Verzeichnisse zu entfernen, führen Sie git clean -f -d oder git clean -fd
  • Um ignorierte Dateien zu entfernen, führen Sie git clean -f -X oder git clean -fX
  • Um ignorierte und nicht ignorierte Dateien zu entfernen, führen Sie git clean -f -x oder git clean -fx

Beachten Sie den Fallunterschied auf dem X für die beiden letzten Befehle.

Wenn clean.requireForce in Ihrer Konfiguration auf "true" (Standardeinstellung) gesetzt ist, muss -f sonst nichts passiert.

Weitere Informationen finden Sie in den git-clean Dokumenten.

Optionen

-f

--Macht

Wenn die Git-Konfigurationsvariable clean.requireForce nicht auf false gesetzt ist, kann git clean nicht ausgeführt werden, es sei denn, -f, -n oder -i wird angegeben.

-x

Verwenden Sie nicht die Standard-Ignorierregeln, die von .gitignore (pro Verzeichnis) und $ GIT_DIR / info / exclude gelesen werden, verwenden Sie jedoch die mit -e -Optionen angegebenen Ignorierregeln. Dies ermöglicht das Entfernen aller nicht protokollierten Dateien, einschließlich der Build-Produkte. Dies kann (möglicherweise in Verbindung mit git reset) verwendet werden, um ein sauberes 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 beibehalten.

-n

--Probelauf

Entferne eigentlich nichts, zeig einfach, was gemacht werden würde.

-d

Entfernen Sie nicht protokollierte Verzeichnisse zusätzlich zu nicht protokollierten Dateien. Wenn ein nicht protokolliertes 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.


uggested Der Befehl zum Entfernen nicht abgehackter Dateien aus git docs ist git clean

git clean - Entfernt nicht nachverfolgte Dateien aus dem Arbeitsbaum

Vorgeschlagene Methode: Interativer Modus mithilfe von git clean -i sodass wir die Kontrolle darüber haben. Lassen Sie sich die verbleibenden verfügbaren Optionen anzeigen.

Verfügbare Optionen:

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

Erläuterung:

1. -d

Entfernen Sie nicht protokollierte Verzeichnisse zusätzlich zu nicht protokollierten Dateien. Wenn ein nicht protokolliertes 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, kann git clean nicht ausgeführt werden, es sei denn, -f, -n oder -i wird angegeben.

3. -i, --interaktiv

Zeigen Sie, was getan werden soll, und löschen Sie Dateien interaktiv. Einzelheiten finden Sie unter „Interaktiver Modus“.

4. -n, - dry-run

Entferne eigentlich nichts, zeig einfach, was gemacht werden würde.

5. -q, --ruhe

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

6. -e, --exclude =

Berücksichtigen Sie zusätzlich zu den in .gitignore (pro Verzeichnis) und $ GIT_DIR / info / exclude gefundenen Mustern, dass diese Muster in der Gruppe der geltenden Ignorierregeln enthalten sind.

7. -x

Verwenden Sie nicht die Standard-Ignorierregeln, die von .gitignore (pro Verzeichnis) und $ GIT_DIR / info / exclude gelesen werden, verwenden Sie jedoch die mit -e -Optionen angegebenen Ignorierregeln. Dies ermöglicht das Entfernen aller nicht protokollierten Dateien, einschließlich der Build-Produkte. Dies kann (möglicherweise in Verbindung mit git reset) verwendet werden, um ein sauberes 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 beibehalten.


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

Verwenden Sie immer -n bevor Sie den eigentlichen Befehl ausführen, um -n , welche Dateien entfernt werden.

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

Standardmäßig entfernt git clean nur nicht protokollierte Dateien, die nicht ignoriert werden. Dateien, die einem Muster in Ihrer .gitignore-Datei oder anderen Ignorier-Dateien entsprechen, werden nicht entfernt. Wenn Sie auch diese Dateien entfernen möchten, können Sie dem Befehl clean einen -x hinzufügen.

git clean -f -d -x

Mit 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, gibt Ihnen jedoch die Flexibilität, die Dateien jederzeit mithilfe von Stash mit Apply oder Pop abzurufen. Später können Sie dann Ihren Vorrat löschen, indem Sie Folgendes verwenden:

git stash drop // or clean

git-clean ist was Sie suchen. Es wird verwendet, um nicht protokollierte Dateien aus dem Arbeitsbaum zu entfernen.


git clean -f to remove untracked files from working directory.

Ich habe hier in meinem Blog einige Grundlagen behandelt, git-intro-basic-commands


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

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



oh-my-zsh mit zsh stellt diese großen Aliase über das Git-Plugin bereit. Sie können auch in bash verwendet werden.

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

  • gclean entfernt nicht gclean Verzeichnisse zusätzlich zu nicht protokollierten Dateien .
  • gpristine setzt die lokalen Änderungen zurück, entfernt nicht nachverfolgte Verzeichnisse und nicht nachverfolgte Dateien und verwendet nicht die standardmäßigen Ignorierregeln, die von .gitignore (pro Verzeichnis) und $ GIT_DIR / info / exclude gelesen werden. Verwenden Sie jedoch weiterhin die mit -e -Optionen angegebenen Ignorierregeln . Dies ermöglicht das Entfernen aller nicht protokollierten Dateien, einschließlich der Build-Produkte. Dies kann (möglicherweise in Verbindung mit git reset) verwendet werden, um ein sauberes Arbeitsverzeichnis zum Testen eines sauberen Builds zu erstellen .

Ein Rettungsring 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 protokollierten Dateien) festschreiben, bevor Sie dies durchführen .


Ich mag git stash push -u weil man sie alle mit git stash pop rückgängig machen kann.

BEARBEITEN: Ich habe auch einen Weg gefunden, um nicht gespeicherte Dateien in einem Stash anzuzeigen (zB git show [email protected]{0}^3 ) https://.com/a/12681856/338986

EDIT2: git stash save wird zugunsten von push abgelehnt. Danke @ Script-Wolf.


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

git clean -fdn

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

git clean -fd

Normaler git clean Befehl entfernt nicht zurückverfolgte Dateien mit meiner 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 -fd das Verzeichnis

git clean -fX entfernt ignorierte Dateien

git clean -fx entfernt ignorierte und nicht ignorierte Dateien

können alle obigen Optionen in Kombination als verwendet werden

git clean -fdXx

Überprüfen Sie das Git-Handbuch für weitere Hilfe


git clean -f -d -x $(git rev-parse --show-cdup) gilt für das Stammverzeichnis, egal wo Sie es innerhalb einer Repository-Verzeichnisstruktur aufrufen. Ich benutze es die ganze Zeit, da es Sie nicht zwingt, den Ordner zu verlassen, in dem Sie gerade arbeiten, und es Ihnen erlaubt, direkt an dem Ort, an dem Sie sich befinden, zu bereinigen und zu bestätigen.

Stellen Sie sicher, dass die Flags -f , -d , -x Ihren Anforderungen 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 Flags, einfach git clean --help .


Wenn Sie nur die Dateien löschen möchten, die von "git status" nicht erfasst wurden

git stash save -u
git stash drop "[email protected]{0}"

Ich bevorzuge dies eher als "git clean", da "git clean" Dateien löscht, die von git ignoriert werden. Daher muss Ihr nächster Build alles neu erstellen, und Sie verlieren möglicherweise auch Ihre IDE-Einstellungen.


Einfache Möglichkeit zum Entfernen nicht protokollierter Dateien

Um alle nicht protokollierten Dateien zu entfernen, fügen Sie zunächst alle Dateien hinzu und setzen Sie das Repo wie folgt zurück

git add --all
git reset --hard HEAD

Wenn das nicht aufgespürte Verzeichnis ein eigenständiges Git-Repository ist (z. B. Submodul), müssen Sie -f zweimal verwenden:

git clean -d -f -f


Das verwende ich immer:

git clean -fdx

Für ein sehr großes Projekt sollten Sie es einige Male ausführen.


Ich bin überrascht, dass das noch nie erwähnt wurde:

git clean -i

Das steht für interaktiv und Sie erhalten einen schnellen Überblick über das, was gelöscht werden soll. Dadurch haben Sie die Möglichkeit, die betroffenen Dateien ein- bzw. auszuschließen. Insgesamt immer noch schneller als der obligatorische - --dry-run vor der eigentlichen Reinigung.

Sie müssen ein -d wenn Sie sich auch um leere Ordner kümmern möchten. Am Ende ist es ein schöner Alias:

git iclean

Davon abgesehen kann das zusätzliche Halten von interaktiven Befehlen für erfahrene Benutzer ermüdend sein. git clean -fd ich einfach den schon erwähnten git clean -fd


Entfernen Sie alle zusätzlichen Ordner und Dateien in diesen Repo + Submodulen

Dies versetzt Sie in einen Zustand wie der frische Klon.

git clean -ffdx

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

git clean -fdx

Entfernen Sie nur zusätzliche Ordner, aber keine Dateien (zB Build-Ordner).

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 erhalten. Beachten Sie die Hauptstadt X.

git clean -fdX

Neuer interaktiver Modus

git clean






git-branch