Warum wird eine Datei durch globale Git-Regeln ignoriert?

Eine Datei kann ignoriert werden, obwohl keine Regel in der Projekt-.gitignore passt. Ermitteln Sie die tatsächliche Quelle, bevor Sie die Konfiguration ändern.

1. Die passende Regel finden

Führen Sie diesen Befehl im Projektstamm aus und ersetzen Sie path/to/file durch den tatsächlichen Pfad einer unversionierten Datei:

git check-ignore -v -- path/to/file

Die ausführliche Ausgabe nennt Quelldatei, Zeilennummer und Muster. Die Quelle kann eine Projekt-.gitignore, .git/info/exclude oder eine globale Ausschlussdatei sein. Eine !-Regel schließt den Pfad wieder ein. Keine Ausgabe kann auch bedeuten, dass die Datei bereits versioniert ist; prüfen Sie das gesondert.

2. Die globale Ausschlussdatei ermitteln

Prüfen Sie den wirksamen Wert von core.excludesFile und die Konfigurationsdatei, die ihn festlegt:

git config --show-origin --get core.excludesFile

Keine Ausgabe bei Exit-Status 1 bedeutet, dass diese Einstellung fehlt, nicht dass globale Ausschlüsse deaktiviert sind. Git liest auch die Standarddatei $XDG_CONFIG_HOME/git/ignore. Ist XDG_CONFIG_HOME nicht gesetzt oder leer, wird $HOME/.config/git/ignore verwendet. Beginnen Sie mit der von check-ignore gemeldeten Regelquelle.

3. Die richtige Regel ändern und erneut prüfen

Wählen Sie anhand der Ausgabe die richtige Datei: Gemeinsame Projektregeln gehören in .gitignore, persönliche Regeln nur für dieses Repository in .git/info/exclude und persönliche Regeln für mehrere Repositories in die globale Ausschlussdatei. Eine globale Änderung betrifft auch andere Repositories. Entfernen Sie nicht die gesamte Konfiguration wegen eines einzelnen Pfads. Projektregeln in .gitignore haben Vorrang vor .git/info/exclude und core.excludesFile. Eine Projektausnahme kann eine nachrangige Ausschlussregel überschreiben, sofern kein Elternverzeichnis ausgeschlossen bleibt. Prüfen Sie nach der Anpassung den tatsächlichen Pfad erneut:

git check-ignore -v -- path/to/file

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 · Dokumentation zur Git-Konfiguration