Frage

Ich habe meine Repo @ Github bekam. Ich habe einige Arbeit zu Hause und schob es auf Github. Dabei handelte es sich einige Löschen von Dateien und Verzeichnissen. Jetzt bin ich auf meiner Arbeit Box, die eine Kopie des Codes hatte, bevor die Dateien und Verzeichnisse zu löschen.

Ich gab die folgende:

git remote update
git checkout HEAD
git pull origin HEAD

Es gelöscht alle Dateien sollte es haben, aber nicht die Verzeichnisse die Dateien waren in.

Zwei Fragen:

  1. Warum hat es nicht die Verzeichnisse entfernen?
  2. Sie haben einen git Befehl, den ich in den aktuellen Stand ausstellen kann, sie zu entfernen?
War es hilfreich?

Lösung

Git verfolgen keine Verzeichnisse, so wird es nicht diejenigen entfernen, die als Ergebnis einer Zusammenführung oder eine andere Änderung leer. Sie können jedoch git clean -fd entfernen untracked Verzeichnisse (die -fd Markierungsmittel f orce Entfernung von untracked Dateien und d irectories) verwenden.

Andere Tipps

Als Teil der meisten Operationen, die den Arbeitsbaum verändern (Pull, fusionieren, Kasse, etc.) GIT werden alle Verzeichnisse entfernen, die durch diesen Vorgang leer gemacht werden (d git die letzte Datei entfernt).

git erhalten keine Verzeichnisse entfernen, die nicht vollständig leer sind, also wenn Sie versteckt haben oder Dateien ignoriert dann nur, weil git die letzte entfernt raupen Datei aus diesem Verzeichnis nicht notwendigerweise bedeutet, dass git wird dieses Verzeichnis entfernen können. git dies nicht betrachtet ein Fehler sein, so wird nicht darüber beschweren.

Git verfolgen keine Verzeichnisse, Dateien (mit ihrem Pfad). Git erstellt alle Verzeichnisse für diese Pfade, wenn sie noch nicht vorhanden sind (cool!), Aber es hat nicht löschen, wenn alle Dateien in einem Pfad enthalten sind, verschoben oder gelöscht (nicht cool ☹. .. aber es gibt Gründe).

Lösung (wenn Sie gezogen haben / pult / fusionierten):

git stash --include-untracked
git clean -fd
git stash pop

Wenn Sie vor stash nicht tun clean, werden Sie alle Ihre untracked Dateien verlieren (irreversibel).

Hinweis: Da dies auch alle ignorierten Dateien reinigt, müssen Sie einige Ihrer Build-Skripte wieder neu erstellen Projektmetadaten laufen (zB: ./gradlew eclipse). Dies auch Verzeichnisse löschen, die leer sind und dass waren nie Teil der Wege von git-Dateien.

Git verfolgen keine Verzeichnisse sind derzeit (siehe git Wiki ), < strike> das heißt, weder Sie können leere Verzeichnisse hinzufügen, noch werden Verzeichnisse git entfernen, die leer am Ende (EDIT:.! Danke, Manni, ich war falsch Sie können nicht Hinzufügen leeren Verzeichnisse, aber git wird entfernen Verzeichnisse, weil ihr nachverfolgt Inhalt gelöscht wurde leer. )

Wie auf den Befehl, die leeren Verzeichnisse zu entfernen:., Die auf dem Betriebssystem abhängt

Für Linux könnten Sie verwenden, z. B.

find -depth -type d -empty -exec rmdir {} \;

Dies wird jedoch entfernen alle leeren Verzeichnisse!

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