1. Eine Dateiendung im ganzen Projekt ignorieren
In der .gitignore im Projektstamm passt diese Regel zu app.log, logs/app.log und src/app.log. * steht für null oder mehr Zeichen außer /. Ohne Schrägstrich im Muster prüft Git Namen auf jeder Ebene unterhalb dieser .gitignore.
Schreiben Sie jedes Muster in eine eigene Zeile. Ausschlussmuster sind keine Shell-Befehle oder regulären Ausdrücke. Die Klammern in *.{log,tmp} stehen hier nicht für eine Liste von Endungen.
*.log 2. Das Muster auf ein Verzeichnis beschränken
Die erste Alternative passt zu logs/app.log direkt unter logs, aber nicht zu logs/archive/app.log. Die zweite passt zu beiden: /**/ erlaubt null oder mehr Verzeichnisebenen dazwischen. Keine der beiden passt zu src/app.log.
Wenden Sie zum Vergleich jeweils nur eine Alternative an. Eine Verzeichnisregel wie /logs/ kann tiefere Dateien ebenfalls durch Ausschluss des Elternverzeichnisses verbergen. Prüfen Sie daher auch andere Regeln.
/logs/*.log/logs/**/*.log 3. Repräsentative Pfade prüfen
Wählen Sie eine Regel, erstellen Sie die drei unversionierten Beispieldateien und prüfen Sie die passenden Muster:
git check-ignore -v -- logs/app.log logs/archive/app.log src/app.logMit /logs/**/*.log sollten beide Pfade unter logs passen, src/app.log dagegen nicht. Ein Treffer mit ! ist eine Ausnahme. Um eine Datei zu behalten, schreiben Sie eine ausdrückliche Ausnahme und lassen Sie alle Elternverzeichnisse durchsuchbar.
Warum bleibt eine Datei trotz ! in einem ignorierten Verzeichnis ausgeschlossen?
Das genaue Verhalten und weitere Einzelheiten erläutern die offiziellen Quellen: Git-Dokumentation · Dokumentation zu git check-ignore