Ich versuche, das folgende Muster in meiner .gitignore
Datei zu vermeiden .
MyPrject/WebApp/Scripts/special/*.js
MyPrject/WebApp/Scripts/special/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*/*/*.js
Wir haben es versucht:
MyPrject/WebApp/Scripts/special/**.js
MyPrject/WebApp/Scripts/special/**/*.js
Dies funktionierte jedoch nicht. Dies ist Git unter Windows. Gibt es eine präzisere Möglichkeit, dies zu tun, ohne Dinge zu wiederholen?
Antworten:
Ab Git 1.8.2 gilt Folgendes:
Sollte nach dieser Antwort funktionieren . Es funktioniert auch für mich in Windows 7 mit Sourcetree 1.6.12.0 und der Version von Git, die es installiert (1.8.4-Vorschau20130916).
So rekursiv jede Datei und jeden Ordner in einem Verzeichnis gitignore:
quelle
/
am Anfang hinzu. Beispiel:/MyProject/WebApp/Scripts/special/**/*.js
.gitignore
in dieser Frage war im Repo-Stammverzeichnis (übergeordnetes Verzeichnis von/Webapp
).foo/bar/*/*
(zweite Zeile)!foo/bar/**/*.js
Sie funktionierte nur für eine Ebene von Unterverzeichnissen, jedoch nicht rekursiv.Folgende gitignore-Handbuchseite:
Dies bedeutet also eindeutig, dass es keine Möglichkeit gibt, eine bestimmte Anzahl von Verzeichnissen zwischen zwei Zeichenfolgen wie zwischen
special
und anzugebenjs
.Trotzdem können Sie eine
.gitignore
Datei pro Verzeichnis haben, also in Ihrem Fall vielleicht den folgenden Inhaltam folgenden Ort
wäre ausreichend?
quelle
MyPrject/WebApp/Scripts/special*.js
und es passteMyPrject/WebApp/Scripts/specialfile.js
genauso gut wieMyPrject/WebApp/Scripts/special/a/b/c/file.js
. Aus irgendeinem Grund hat sich das Verhalten jedoch geändert, und meine derzeitige Problemumgehung besteht darin, Verzeichnisse einzeln aufzulisten. Ich benutze GitHub für Windows.find MyPrject/WebApp/Scripts/special -type d -printf 'echo "*.js" >> %h/.gitignore\n git add %h/.gitignore\n' | sh
Das funktioniert bei mir in osx.
quelle
Versuchen Sie auszuführen
git rm -r --cached MyPrject/WebApp/Scripts/special/
Ihr angegebenes Verzeichnis wurde möglicherweise von git zwischengespeichert und wird in nicht verfolgten Dateien angezeigt. Stellen Sie nach dem Löschen des Caches sicher, dass Sie ihn erwähnt haben.gitignore
.quelle