1. Die fehlerhafte Regel erkennen
Angenommen, im Projekt liegen die unversionierten Dateien build/keep.txt und build/discard.txt. Die folgenden Regeln schließen build selbst aus. Git durchsucht das Verzeichnis daher nicht nach keep.txt. Die spätere Ausnahme kann diese Datei nicht wieder einschließen.
/build/
!/build/keep.txt 2. Den Inhalt ausschließen und eine Datei zulassen
Ersetzen Sie die vorherigen zwei Regeln in der .gitignore im Projektstamm durch diese Regeln. Git kann build weiterhin durchsuchen, schließt dessen direkten Inhalt aus und lässt keep.txt wieder zu. Das Beispiel gilt für eine Datei direkt in build. Bei tieferen Pfaden müssen alle Elternverzeichnisse durchsuchbar bleiben.
Bei gleicher Priorität entscheidet die letzte passende Regel. Setzen Sie die Ausnahme daher hinter die Ausschlussregel. Prüfen Sie auch weitere passende Regeln und .gitignore-Dateien in Unterverzeichnissen.
/build/*
!/build/keep.txt 3. Beide Dateien prüfen
Erstellen Sie die beiden Beispieldateien und führen Sie diese Befehle im Projektstamm aus. Die ausführliche Ausgabe sollte für keep.txt die Regel !/build/keep.txt und für discard.txt die Regel /build/* zeigen. Eine passende !-Regel bedeutet, dass die Datei wieder eingeschlossen wird, nicht dass sie ignoriert bleibt.
git check-ignore -v -- build/keep.txt build/discard.txtDie Statusausgabe sollte build/keep.txt als unversioniert anzeigen und build/discard.txt auslassen. Werden die Dateien bereits versioniert, lesen Sie den entsprechenden Artikel. Ausschlussregeln ändern keine bestehenden Indexeinträge.
git status --short --untracked-files=all -- build/ Das genaue Verhalten und weitere Einzelheiten erläutern die offiziellen Quellen: Git-Dokumentation · Dokumentation zu git check-ignore