MISE À JOUR : Jetez un coup d'œil à La réponse de @Joey : Git supporte maintenant le **
syntaxe dans les modèles. Les deux approches devraient fonctionner correctement.
Le site page de manuel gitignore(5) États :
Les motifs sont lus à partir d'un fichier .gitignore dans le même répertoire que le chemin, ou dans n'importe quel répertoire parent, les motifs des fichiers de niveau supérieur (jusqu'au premier niveau de l'arbre de travail) étant remplacés par ceux des fichiers de niveau inférieur jusqu'au répertoire contenant le fichier.
Cela signifie que les motifs d'une .gitignore
dans n'importe quel répertoire de votre dépôt affectera ce répertoire et tous les sous-répertoires .
Le modèle que vous avez fourni
/public/static/**/*.js
n'est pas tout à fait juste, d'abord parce que (comme vous l'avez correctement noté) la **
n'est pas utilisée par Git. De plus, le caractère de tête /
ancre ce motif au début du nom de chemin. (Ainsi , /public/static/*.js
correspondra à /public/static/foo.js
mais pas /public/static/foo/bar.js
.) Suppression de l'amorce /
ne fonctionnera pas non plus, les chemins correspondants comme public/static/foo.js
et foo/public/static/bar.js
. EDIT : Le simple fait de supprimer le slash de tête ne fonctionne pas non plus - parce que le motif contient toujours un slash, il est traité par Git comme un simple glob shell non récursif (merci à @Joey Hoer pour l'avoir signalé).
Comme @ptyx l'a suggéré, ce que vous devez faire est de créer le fichier <repo>/public/static/.gitignore
et inclure juste ce modèle :
*.js
Il n'y a pas de leader /
de sorte qu'il correspondra à n'importe quelle partie du chemin d'accès, et ce motif ne sera jamais appliqué qu'aux fichiers du répertoire /public/static
et ses sous-répertoires.