Mit git Version 1.7.1 versuche ich, alle Dateien außer .php-Dateien auszuschließen.
Die gefundene Arbeitslösung basiert auf dem Befehl !*/
Ohne !*/
enthält es nur die Dateien *.php
im Stammverzeichnis. Was macht !*/
so, dass dies funktioniert?
Schauen Sie sich die Dokumentation von gitignore
anEin optionales Präfix "!" was negiert das Muster; jede passende Datei durch ein vorheriges Muster ausgeschlossen wird wieder aufgenommen werden. Es ist nicht möglich, eine Datei wieder aufzunehmen, wenn ein übergeordnetes Verzeichnis dieser Datei ist ausgeschlossen. Git listet keine ausgeschlossenen Verzeichnisse für die Leistung auf Gründe, so dass irgendwelche Muster auf enthaltenen Dateien keine Wirkung haben, egal wo sie definiert sind. Setzen Sie einen Backslash ("\") vor den ersten "!" für Muster, die beispielsweise mit einem Literal "!" beginnen, "! wichtig! .txt".
Hier ist meine Denkweise:
Die ignore-Anweisung *
ignoriert standardmäßig alles, einschließlich des Stammverzeichnisses und seines gesamten Inhalts.
An diesem Punkt werden alle Dateien und Ordner im Stammverzeichnis ignoriert.
Der Befehl !*.php
fügt alle *.php
-Dateien im Stammpfad wieder ein, aber die Ordner werden immer noch ignoriert (weil sie nicht in .php
enden) - und daher auch nicht aus dem Gitignore noch negiert.
Der Befehl !*/
enthält also alle Verzeichnisse (und nachfolgende Unterverzeichnisse) neu, so dass sie auf *.php
-Dateien untersucht werden können. Beispiel: folder1/
stimmt mit der Negationsanweisung !*/
überein, da sie am Ende das /
enthält und der Ordnername in den Platzhalteroperator *