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




git delete branch (20)

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


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

Reinigen Sie das Git-Repository und alle Submodule rekursiv

Der folgende Befehl löscht das aktuelle git-Repository und alle seine Submodule rekursiv:

(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)

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

Das verwende ich immer:

git clean -fdx

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


Ein besserer Weg ist zu verwenden: git clean

git clean -d -x -f

Dadurch werden nicht protokollierte Dateien entfernt, einschließlich der Verzeichnisse (-d) und der von git (-x) ignorierten Dateien.

Ersetzen Sie auch das Argument -f durch -n , um einen dry-run oder -i für den interaktiven Modus dry-run -i wird Ihnen mitgeteilt, was entfernt wird.


Für mich nur folgendes gearbeitet:

git clean -ffdx

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


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.


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.


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

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:

Sample.txt entfernen


Wenn Sie nicht protokollierte Dateien aus einem bestimmten Unterverzeichnis entfernen möchten,

git clean -f {dir_path}

Und kombinierte Weise, um nicht aufgespürte Verzeichnisse / Dateien und ignorierte Dateien zu löschen.

git clean -fxd {dir_path}

Danach haben Sie Dateien nur im git status geändert.


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.


Wir können lokale, nicht aufgespürte Dateien leicht aus dem aktuellen Git-Arbeitsbaum entfernen, indem Sie die folgenden Git-Kommentare verwenden.

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 reset --hard HEAD', um zu einem vorherigen Commit zurückzukehren?
  3. Setzen Sie den lokalen Repository-Zweig zurück, um genau wie das Remote-Repository HEAD zu sein
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html

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.


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


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 .


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


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.


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!



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 .




git-branch