Was bedeutet! * / in .gitignore

8

Mit git Version 1.7.1 versuche ich, alle Dateien außer .php-Dateien auszuschließen.

Die gefundene Arbeitslösung basiert auf dem Befehl !*/

%Vor%

Ohne !*/ enthält es nur die Dateien *.php im Stammverzeichnis. Was macht !*/ so, dass dies funktioniert?

    
bitsoflogic 28.08.2014, 17:20
quelle

2 Antworten

11

Schauen Sie sich die Dokumentation von gitignore

an
  

Ein 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".

    
Bijan 28.08.2014, 17:26
quelle
9

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 *

passt     
sjagr 28.08.2014 17:32
quelle

Tags und Links