Wie entferne ich einen leeren Ordner und pushe diese Änderung?

Lesezeit: 3 Minuten

Benutzer-Avatar
Michael Durrant

Wie kann ich einen leeren Ordner lokal entfernen und dies auch für andere Mitarbeiter tun, die die Fernbedienung per Pull-Push teilen? Ich weiß, dass Ordner in diesem Sinne nicht von Git “verfolgt” werden, aber die Frage bleibt.

zB habe ich eine Datei in einen anderen Ordner verschoben und die Änderung (des Verschiebens) übernommen.

Aber ich kann nicht git rm name der Ordner, wenn ich bekomme “stimmt nicht überein”
git rmdir name existiert nicht.

Ich kann ein git clean -f folder aber wie wird das hochgedrückt?

Ich kann direkt rm die Datei, aber wie bekomme ich das Entfernen des Verzeichnisses korrekt durchgeführt und in das Repository und dann an andere gesendet, wenn sie ziehen, damit ihr vorhandener Ordner gelöscht wird.

  • Was meinst du, die Frage bleibt?

    – manojlds

    9. April 2012 um 14:53 Uhr

Benutzer-Avatar
Jake Green

Die kurze Antwort: Sie können keine Änderungen an Verzeichnissen (hinzugefügt, entfernt usw.) pushen, da Git Verzeichnisse nicht selbst verfolgt.

Laut dem FAQ:

Derzeit erlaubt das Design des Git-Index (Staging-Bereich) nur das Auflisten von Dateien, und niemand, der kompetent genug ist, um die Änderung vorzunehmen, um leere Verzeichnisse zuzulassen, hat sich genug um diese Situation gekümmert, um Abhilfe zu schaffen.

Verzeichnisse werden automatisch hinzugefügt, wenn Dateien darin hinzugefügt werden. Das heißt, Verzeichnisse müssen nie zum Repository hinzugefügt werden und werden nicht selbst verfolgt.

Was Git betrifft, existiert Ihr leeres Verzeichnis also nicht mehr.

Ich habe festgestellt, dass ich mich an die Verwendung gewöhne git clean -fd beseitigt die Notwendigkeit, das Entfernen von Verzeichnissen voranzutreiben. Jedoch, git clean kann Elemente entfernen, die Sie möglicherweise nicht entfernen möchten (einschließlich aller neuen Dateien, die Sie noch nicht übertragen haben), daher tendiere ich dazu, zuerst zu verwenden git clean -fdn um was zu sehen Wille entfernt werden, wenn ich den Befehl verwende.

Es sieht so aus, als wären Sie gezwungen, mit Ihren Kollegen zu sprechen, um dieses Verzeichnis zu bereinigen.

  • Mercurial hat hier einen gesünderen Ansatz – das Verzeichnis wird entfernt, wenn es leer ist: stackoverflow.com/a/3917322/913223 und superuser.com/questions/81204/…

    – Daniel Sokolowski

    5. August 2015 um 23:01 Uhr

  • Diese Antwort ist unvollständig. Das git svn fetch verwaltet leere Ordner. Eben git svn rebase Erstellen Sie leere Ordner neu, wenn Sie einfach einen entfernen.

    – Andry

    30. Juli 2017 um 1:13 Uhr


  • @DanielSokolowski, ist das der gleiche Ansatz in Git, zumindest beim Klonen eines Repos. Ich habe festgestellt, dass Git beim Klonen eines Repos, das ein leeres Verzeichnis enthält, kein leeres Verzeichnis erstellt. Ist das kein großes Problem, weil ich jetzt prüfen muss, ob das Verzeichnis zum Schreiben von Dateien existiert?

    – alpha_989

    7. April 2018 um 22:34 Uhr

git add --all
git clean -f -d
git commit -m "trying to remove folders"
git push

  • Gibt es eine Möglichkeit, dies zu erreichen, ohne Änderungen festschreiben und vorantreiben zu müssen?

    – Benjamin Johannes

    20. April 2020 um 13:50 Uhr

  • Sie müssen sich nicht verpflichten. Die letzten 2 Befehle sind nicht erforderlich

    – Izhar Aazmi

    9. Juni 2021 um 12:56 Uhr

  • git clean -i -d wäre schöner.

    – Benutzer2987828

    13. Dezember 2021 um 16:57 Uhr

Sie können keine leeren Ordner verschieben. Wenn Sie jedoch leere Ordner in Ihrem geklonten/lokalen Repo bereinigen möchten, übertragen Sie Ihre letzten Änderungen. Löschen Sie dann einfach alle Dateien außer dem .git-Ordner in Ihrer lokalen Kopie. Setzen Sie dann alle Änderungen erneut zurück, wodurch alle Dateien zurückgesetzt werden, aber die leeren Verzeichnisse, die nicht verfolgt werden, ausgelassen werden.

  • Oder einfach verwenden git clean -fd

    – Aaron Franke

    27. Januar 2020 um 11:04 Uhr

Ein etwas trickreicher Weg, dies zu umgehen, besteht darin, eine gefälschte Datei im Verzeichnis zu erstellen, sie zu übertragen und sie dann zu entfernen. Durch das Entfernen wird auch das Verzeichnis entfernt. Erstellen Sie also name/fake.txt

git add name/fake.txt
git commit -m "message"
git rm name/fake.txt
git commit -m "message2"

1017220cookie-checkWie entferne ich einen leeren Ordner und pushe diese Änderung?

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

Privacy policy