Frage .gitignore versteht meinen Ordner-Platzhalter in Windows nicht


Ich stoße auf ein komisches Problem mit .gitignore unter Windows.

Ich möchte, dass Git alle ignoriert .exe Dateien, außer denen in der Dependencies Ordner (und alle Unterordner).

Also habe ich:

.gitignore:

*.exe
!/Dependencies/**/*.exe

Dies funktioniert leider nicht.

Inzwischen tut dies:

*.exe
!/Dependencies/folder/subfolder/*.exe

Also frage ich mich, mache ich etwas kaputt, oder ist das eine Art Käfer?

Ich laufe msysgit unter Windows (Windows 7 x64) Version 1.6.5.1-preview20091022

Vielen Dank im Voraus für jede Eingabe :)


16
2018-02-24 23:24


Ursprung


Antworten:


Schon seit Git 1.8.2 (8. März 2013), das ** wird jetzt unterstützt:

Die Muster in .gitignore und .gitattributes Dateien kann haben **/, als ein Muster, das 0 oder mehr Ebenen des Unterverzeichnisses entspricht.

Z.B. "foo/**/bar" Streichhölzer "bar" im "foo"sich selbst oder in einem Unterverzeichnis von"foo".

In Ihrem Fall bedeutet das, dass diese Zeile jetzt unterstützt wird:

!/Dependencies/**/*.exe

16
2018-04-23 09:17



Das .gitignore Dokumentation sagt:

git behandelt das Muster als Shell-Glob, das von fnmatch (3) mit dem Flag FNM_PATHNAME konsumiert werden kann

Es ist möglich, dass fnmatch auf Ihrer Plattform ** in einem Pfad nicht unterstützt.


2
2018-02-24 23:42



Sie könnten ein hinzufügen .gitignore Datei zum Dependencies Ordner mit

* .exe

Innerhalb. Der offensichtliche Nachteil ist, dass die Spezifikationen jetzt auf mehrere Dateien verteilt sind.


2
2018-04-30 12:43