← Alle Beiträge
TIL10. Juni 2026git

gitignore: dir/ macht deine !-Ausnahmen wirkungslos

Ein ganzer Ordner ignoriert, die Ausnahme darin greift trotzdem nicht. Der Trick ist dir/* plus !dir/wichtiges/ statt dir/.

Ich wollte einen Cache-Ordner ignorieren, aber einen wertvollen Unterordner davon behalten. Die naheliegende .gitignore sah so aus, und funktionierte nicht:

.cache/
!.cache/wichtiges/

Der Unterordner blieb ignoriert, egal was ich probierte.

Warum

Wenn git ein Verzeichnis über dir/ komplett ausschließt, steigt es gar nicht erst in das Verzeichnis hinab. Es prüft die einzelnen Dateien darin nie, also bekommt die !-Ausnahme nie eine Chance zu greifen. Die Regel ist ausgehebelt, bevor sie gelesen wird.

Der Fix

Statt das Verzeichnis selbst zu ignorieren, ignoriere seinen Inhalt mit /*. Dann steigt git hinab, und die Ausnahme kann wirken:

.cache/*
!.cache/wichtiges/

Warum mich das überhaupt beschäftigt hat

Der Kontext war meine Regel, Wertvolles nie an regenerierbaren Orten liegen zu lassen. Manches landet doch in einem .cache-Ordner, ein manuell gezogener Token, ein einmaliger Export ohne Rückweg. Damit das den nächsten Aufräum-Lauf überlebt, muss die Ausnahme wirklich greifen. Genau da biss die dir/-Falle.