Git clean bereinigt keine nicht nachverfolgten Dateien

Lesezeit: 5 Minuten

Benutzeravatar von DA
DA.

Ich erhalte die Fehlermeldung „Die folgenden nicht nachverfolgten Arbeitsbaumdateien würden beim Auschecken überschrieben … bitte verschieben oder entfernen Sie sie, bevor Sie die Zweige wechseln“.

Die gemeinsame Lösung scheint zu sein git clean

Wenn ich das eintippe, bekomme ich keine Fehlermeldung, aber es passiert nichts. Und wenn ich einen anderen Zweig auschecke, erhalte ich nur den gleichen Fehler wie oben.

Irgendein Grund, warum git clean würde absolut nichts tun?

AKTUALISIEREN:

Mehr Info. git -n und git -f genau das gleiche tun … nichts.

  • 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

    – William Pursel

    15. August 2018 um 21:06 Uhr

  • @WilliamPursell Danke. Ich habe meine Frage aktualisiert. Ach, -f und -n auch dazu führen, dass nichts passiert.

    – DA.

    15. August 2018 um 21:12 Uhr

  • was macht git status Show?

    – Raumelch

    15. August 2018 um 21:18 Uhr

  • Aus welchem ​​Verzeichnis führst du aus git clean? Es wird nur das aktuelle Arbeitsverzeichnis und darunter bereinigt.

    – William Pursel

    15. August 2018 um 21:22 Uhr

  • Werden diese Dateien ignoriert? Hast du versucht hinzuzufügen -x?

    – William Pursel

    15. August 2018 um 21:33 Uhr

Benutzeravatar von Venkataraman R
Venkataraman R

Wenn Sie nicht verfolgte Dateien bereinigen möchten, verwenden Sie den folgenden Befehl. Aber seien Sie vorsichtig, bevor Sie dies ausführen, da es Ihren Arbeitsbereich, Index, HEAD löscht.

git reset --hard

Ich denke, Sie haben nicht verfolgte Verzeichnisse oder ignorierte Dateien (Build-Dateien) von gitignore in Ihrem Arbeitsbereich. Sie können sie mit dem folgenden Befehl entfernen.

git clean -dfx

-d

Entfernen Sie nicht verfolgte Verzeichnisse zusätzlich zu nicht verfolgten Dateien. Wenn ein nicht nachverfolgtes 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.

-f –force

Wenn die Git-Konfigurationsvariable clean.requireForce nicht auf false gesetzt ist, weigert sich git clean, Dateien oder Verzeichnisse zu löschen, es sei denn, es wird -f, -n oder -i angegeben. Git weigert sich, Verzeichnisse mit .git-Unterverzeichnissen oder -Dateien zu löschen, es sei denn, es wird ein zweites -f angegeben.

-x

Verwenden Sie nicht die standardmäßigen Ignorierregeln, die aus .gitignore (pro Verzeichnis) > und $GIT_DIR/info/exclude gelesen werden, aber verwenden Sie dennoch die Ignorierregeln, die mit den Optionen -e > angegeben sind. Dies ermöglicht das Entfernen aller nicht nachverfolgten Dateien, einschließlich Build-Produkten. Dies kann (möglicherweise in Verbindung mit git reset) verwendet werden, um ein makelloses Arbeitsverzeichnis zum Testen eines sauberen Builds zu erstellen.

Für mehr Informationen sauber machen

  • Ich habe dieses X vermisst … es hat nicht geputzt =(

    – Daniel N.

    15. April um 7:51 Uhr

Benutzeravatar von gzimmers
gzimmers

Wie andere Kommentare angegeben haben, müssen Sie das Flag -f hinzufügen.

Aber vielleicht haben Sie Probleme, nicht weil Sie –force nicht angeben, sondern weil Sie sich in einem anderen Unterverzeichnis befinden.

zum Beispiel, wenn ich ein Git-Repository habe, das sich in /myrepo/.git befindet

und ungetrackte Dateien im Unterverzeichnis /myrepo/untracked/file.txt,

aber das aktuelle Arbeitsverzeichnis meines Terminals ist /myrepo/src/.

git clean -fd wird nicht funktionieren. Sie müssen in das Projektstammverzeichnis wechseln, bevor Sie den Befehl ausführen.

TL; DR: git clean -fd bereinigt anscheinend nur nicht verfolgte Dateien und Verzeichnisse in und unterhalb des aktuellen Arbeitsverzeichnisses Ihres Terminals.

  • Danke! Dies war mein Problem (bei der Arbeit in einem Garn-Arbeitsbereich Mono Repo)

    – Norfeldt

    16. November 2021 um 7:21 Uhr

Benutzeravatar von saravana va
saravana va

versuchen zu benutzen

git clean -fd

Versuchen Sie, die Änderungen zu speichern,

git stash

wenn du beck alle änderungen nutzen willst,

git stash apply

Dies ist möglicherweise nicht das, was in OPs Fall passiert ist. Allerdings hatte ich das gleiche Problem. In meinem Fall war das Verzeichnis, das nicht bereinigt wurde, ein Submodul, das ich hinzugefügt habe, aber ich habe es anschließend zurückgesetzt. Ich musste alle Spuren davon entfernen .gitmodules, .git/config und .git/modules/<path to submodule> für git clean, um es zu entfernen, selbst wenn git status es als nicht verfolgt erkannt hat.

Es scheint mir, dass Sie -n oder -f angeben müssen. Aus den Manpages:

OPTIONS

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

  • Ich habe meine Frage aktualisiert. Ach, -f und -n auch dazu führen, dass nichts passiert.

    – DA.

    15. August 2018 um 21:11 Uhr

  • Danke, dass du das geteilt hast. In meinem Fall musste ich hinzufügen zwei -f Argumente, um alle meine ignorierten Dateien und Verzeichnisse löschen zu lassen.

    – Feuerbusch

    22. März um 16:09 Uhr


Meine Vermutung liegt daran git clear -f kehre nicht zurück nicht verfolgt Verzeichnisse, obwohl die Dokumentation lautet:

Reinigt den Arbeitsbaum von rekursiv Entfernen von Dateien, die nicht der Versionskontrolle unterliegen, beginnend mit dem aktuellen Verzeichnis.

Das -d docs räumt die Verwirrung auf:

Wenn kein angegeben ist, wird git clean normalerweise nicht in nicht verfolgte Verzeichnisse rekursiv, um zu vermeiden, dass zu viel entfernt wird. Geben Sie -d an, damit es auch in solche Verzeichnisse rekursiv ausgeführt wird.

  • Ich habe meine Frage aktualisiert. Ach, -f und -n auch dazu führen, dass nichts passiert.

    – DA.

    15. August 2018 um 21:11 Uhr

  • Danke, dass du das geteilt hast. In meinem Fall musste ich hinzufügen zwei -f Argumente, um alle meine ignorierten Dateien und Verzeichnisse löschen zu lassen.

    – Feuerbusch

    22. März um 16:09 Uhr


1429330cookie-checkGit clean bereinigt keine nicht nachverfolgten Dateien

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy