Einfach ausgedrückt ist .gitkeep eine konventionelle Dummy-Datei. Ihre Existenz dient nur einem einzigen Zweck: Git zu zwingen, einen Ordner zu verfolgen, der eigentlich leer sein sollte.
Warum wird es benötigt?
Die Designlogik von Git ist “Dateiänderungen verfolgen”, nicht “Ordner verfolgen”. Wenn Ihr Projekt einen leeren Ordner enthält, wird Git ihn vollständig ignorieren und nicht auf GitHub oder Ihren Server hochladen.
Dies führt zu einem Problem: Manchmal benötigt Ihr Code ein bestimmtes Verzeichnis, um ausgeführt zu werden, aber Sie möchten keine Testdaten oder temporären Dateien hochladen. Wenn das Verzeichnis nicht existiert, könnte das Programm abstürzen.
Diese Ordner sind normalerweise:
logs/: Für Protokolldateienuploads/: Von Benutzern hochgeladene Dateientmp/: Temporäre Dateiencache/: Cache-Daten
Diese Verzeichnisse werden zur Laufzeit benötigt, ihr Inhalt sollte nicht committet werden, aber der Ordner selbst muss existieren.
Wie es funktioniert
Um Git “auszutricksen”, damit es diesen Ordner behält, platzieren wir eine versteckte Datei ohne wirkliche Funktion darin, damit Git denkt: “Oh! Hier ist etwas, das muss ich aufzeichnen.”
Praktische Analogie:
Stellen Sie sich vor, Sie bauen ein Haus (schreiben ein Projekt):
| Datei | Beschreibung |
|---|---|
.gitignore |
Wie ein “Nicht wegwerfen”-Etikett, das der Reinigungskraft (Git) mitteilt, welche Dinge (wie abgelaufene Lebensmittel, Altpapier) absolut nicht in das neue Haus gebracht werden dürfen. |
.gitkeep |
Wie eine “Platzhalter-Box”. Das neue Haus ist noch nicht eingerichtet, aber Sie müssen Platz für den Abstellraum reservieren, also stellen Sie eine Kiste dorthin, um den Umzugshelfern mitzuteilen, dass dieser Bereich Teil des Hauses ist und nicht abgerissen werden soll. |
Wie benutzt man es?
- Erstellen Sie eine Datei namens
.gitkeepim leeren Ordner. - Der Dateiinhalt kann leer sein, oder Sie können “Keep this directory” schreiben.
- Führen Sie
git addundcommitfür diese Datei aus.
Vergleich .gitkeep vs .gitignore
| Merkmal | .gitkeep |
.gitignore |
|---|---|---|
| Offizieller Status | Inoffiziell (Nur eine Community-Konvention) | Offiziell (Integrierte Git-Funktion) |
| Hauptfunktion | Einen Ordner behalten, verhindern, dass er von Git vergessen wird | Dateien ausschließen, verhindern, dass sie von Git verfolgt werden |
| Häufige Szenarien | Leere Log-Ordner, Cache-Ordner | Passwortdateien, node_modules, temporäre Dateien |
Praktischer Rat: Querdenken
Obwohl .gitkeep häufig verwendet wird, ist es eigentlich kein offizieller Teil von Git. Tatsächlich könnten Sie README.md oder .placeholder verwenden, um denselben Effekt zu erzielen. Aber warum bevorzugen alle .gitkeep? Weil es selbsterklärend ist: “Diese Datei tut nichts anderes, als Git davon abzuhalten, diesen Ordner zu löschen.”
Wenn Sie etwas professioneller wirken möchten, gibt es einen kreativeren Ansatz, der funktionaler ist als nur die Verwendung von .gitkeep:
Platzieren Sie eine .gitignore im leeren Ordner mit folgendem Inhalt:
# Alles in diesem Verzeichnis ignorieren
*
# Aber ignoriere mich nicht (diese .gitignore Datei selbst)
!.gitignore
Dies stellt sicher, dass Sie den Ordner behalten, während sichergestellt wird, dass Mülldateien darin niemals versehentlich committet werden. Dies ist die wahre “idiotensichere” (Foolproof) Methode.
Fazit
.gitkeepist ein menschlicher Kompromiss an die Designlogik von Git.- Es ist keine offizielle Spezifikation, hat sich aber zum De-facto-Standard für Entwickler entwickelt.
- Was wirklich wichtig ist, ist zu verstehen, wie
.gitignorefunktioniert;.gitkeepist nur ein kleines Werkzeug, um Git zu helfen, leere Ordner zu “verstehen”.