Git und leere Ordner

Da Git bekanntlich keine Ordner, sondern nur Dateien kennt, landen leere Ordnerstrukturen nicht im Repository. Da viele Frameworks und Projekte diese aber zwingend benötigen, sollten sie dort aber landen. Eine gängige Praxis ist es, sog. Platzhalter-Dateien (oft .gitkeep genannt) anzulegen, die implizit die Ordnerstruktur vorgeben. Diese Dateien kann man leicht erzeugen und zusätzlich falls gewünscht dafür sorgen, dass andere Dateien in den Ordnern ignoriert werden.


Zunächst erstellen wir ein Testrepository und legen einige Unterordner an:

434e6616f335599d241482f169f68f1b

Wir haben nun folgende Ordnerstruktur:

434e6616f335599d241482f169f68f1b

Ein git status -u zeigt uns wie erwartet keine Änderungen an:

Git und leere Ordner

Wir erzeugen nun mit Hilfe von find die Platzhalter-Dateien an allen benötigten Stellen:

434e6616f335599d241482f169f68f1b

Wir haben nun folgende Ordner-/Dateistruktur erhalten:

434e6616f335599d241482f169f68f1b

Ein git status -u zeigt uns nun, dass alle Ordner (implizit) im Repository landen:

Git und leere Ordner

Wollen wir nun noch erreichen, dass zwar die Ordnerstruktur stets im Repository landet, jedoch nicht etwaige Dateien (abgesehen von den Platzhalter-Dateien), legen wir eine gitignore an:

434e6616f335599d241482f169f68f1b

Dabei machen wir Gebrauch von der Doppelstern-Syntax:

434e6616f335599d241482f169f68f1b

Die erste Zeile ignoriert rekursiv alle Dateien und Ordner (auf beliebiger Ebene) im Ordner "foo", die zweite Zeile exkludiert von dieser Regel rekursiv alle Ordner (auf beliebiger Ebene) und die dritte Zeile exkludiert alle .gitkeep-Dateien (auf beliebiger Ebene).

Nun legen wir einige Testdateien an:

434e6616f335599d241482f169f68f1b

Ein git status -u zeigt uns nun das gewünschte Resultat:

Git und leere Ordner

Zurück