Ich habe alle oben genannten Antworten ausprobiert, aber keine hat mir geholfen. Nach dem Lesen der gitignore-Dokumentation ( aquí ) habe ich herausgefunden, dass die Dateinamen in den Unterordnern nicht indiziert werden, wenn man zuerst einen Ordner ausschließt. Wenn man also das Ausrufezeichen danach benutzt, um eine Datei einzuschließen, wird sie nicht im Index gefunden und somit auch nicht in den Git-Client aufgenommen.
Das war der Weg zur Lösung. Ich begann mit dem Hinzufügen von Ausnahmen für alle Unterordner in meinem Ordnerbaum, um es zum Laufen zu bringen, was eine höllische Arbeit ist. Danach war ich in der Lage, die detaillierte Konfiguration auf die folgende Konfiguration zu reduzieren, die ein wenig im Gegensatz zur Dokumentation steht
Funktionierende .gitignore:
# Ignore the 'Pro' folder, except for the '3rdparty' subfolder
/Pro/*
!Pro/3rdparty/
# Ignore the '3rdparty' folder, except for the 'domain' subfolder
/Pro/3rdparty/*
!Pro/3rdparty/domain/
# Ignore the 'domain' folder, except for the 'modulename' subfolder
Pro/3rdparty/domain/*
!Pro/3rdparty/domain/modulename/
Als Ergebnis sehe ich in meinem Git-Client, dass nur die beiden Dateien im Ordner Pro/3rdparty/domain/modulename/ für die nächste Übertragung bereitgestellt werden, und das war genau das, wonach ich gesucht habe.
Und wenn Sie mehrere Unterordner desselben Ordners auf die Whitelist setzen wollen, gruppieren Sie die Ausrufezeichen-Zeilen unter der Ausschluss-Anweisung wie folgt:
# Ignore the 'Pro' folder, except for the '3rdparty' subfolder
/Pro/*
!Pro/3rdparty/
# Ignore the '3rdparty' folder, except for the 'domain' & 'hosting' subfolders
/Pro/3rdparty/*
!Pro/3rdparty/domain/
!Pro/3rdparty/hosting/
# Ignore the 'domain' folder, except for the 'modulename' subfolder
Pro/3rdparty/domain/*
!Pro/3rdparty/domain/modulename/
# Ignore the 'hosting' folder, except for the 'modulename' subfolder
Pro/3rdparty/hosting/*
!Pro/3rdparty/hosting/modulename/
Andernfalls wird es nicht wie erwartet funktionieren.
20 Stimmen
Duplikat von stackoverflow.com/q/9162919/321973 (Ich weiß, dass das neuer ist, aber die Antwort dort ist richtiger). Eigentlich diese Antwort ist wahrscheinlich die beste