Wie behalte ich ein leeres Verzeichnis? .gitkeep oder .gitignore?

Übliche Git-add- und Checkout-Abläufe erhalten Verzeichnisse durch deren Dateien. Wählen Sie je Verzeichnis eine Methode: .gitkeep für zunächst leere Verzeichnisse mit späteren Inhalten oder .gitignore für dauerhaft ignorierte generierte Inhalte.

1. Einen Platzhalter für spätere Inhalte anlegen

Erstellen Sie uploads und im Editor eine leere uploads/.gitkeep. Nehmen Sie dann diese konkrete Datei in den Index auf:

git add -- uploads/.gitkeep

Prüfen Sie, dass uploads/.gitkeep im Index steht. Der Name .gitkeep ist eine Konvention ohne besondere Git-Funktion. Eine README mit dem Zweck des Verzeichnisses funktioniert ebenso. Künftig hinzugefügte Dateien werden dadurch nicht automatisch ignoriert.

git ls-files -- uploads/

2. Das Verzeichnis behalten und generierte Inhalte ignorieren

Erstellen Sie als andere Variante uploads/.gitignore mit den folgenden zwei Zeilen. * ignoriert die Inhalte; !.gitignore lässt die Regeldatei selbst zu. Für dieses Verzeichnis genügt diese Methode, ohne zusätzlich die .gitkeep-Variante anzuwenden.

Die Regeldatei selbst ist der versionierte Platzhalter. Das Verzeichnis enthält also diese Datei. Künftige Dateien bleiben ignoriert, bis Sie die Regeln ändern.

*
!.gitignore

Warum bleibt eine Datei trotz ! in einem ignorierten Verzeichnis ausgeschlossen?

3. Die gewählte Methode prüfen

Für die .gitignore-Variante nehmen Sie die Regeldatei in den Index auf:

git add -- uploads/.gitignore

Erstellen Sie uploads/example.bin und prüfen Sie die passende Regel:

git check-ignore -v -- uploads/example.bin

Im Index sollte uploads/.gitignore stehen, aber nicht example.bin. Schließt eine übergeordnete Regel uploads selbst aus, korrigieren Sie zuerst diese Regel, damit Git die darin liegende .gitignore lesen kann.

git ls-files -- uploads/

Wie ignoriere ich Ordner? folder/ gegenüber /folder/

Das genaue Verhalten und weitere Einzelheiten erläutern die offiziellen Quellen: Git-Dokumentation · Dokumentation zu git add