310 votes

gitignore tous les fichiers d'extension dans le répertoire

Existe-t-il un moyen d'ignorer tous les fichiers d'un type donné dans un répertoire ?

** n'a apparemment aucun sens pour git, donc cela ne fonctionne pas :

/public/static/**/*.js

L'idée est de faire correspondre des dossiers imbriqués arbitraires.

300voto

Joey Hoer Points 336

Il semblerait que le ** La syntaxe est supportée par git à partir de la version 1.8.2.1 en fonction de la documentation .

Deux astérisques consécutifs (" ** ") dans les motifs comparés au nom de chemin complet peut avoir une signification particulière :

  • Un leader " ** "suivi d'une barre oblique signifie que la correspondance se fait dans tous les répertoires. Pour exemple, " **/foo " correspond à un fichier ou un répertoire " foo "n'importe où, de la même façon que le motif " foo ". " **/foo/bar " correspond à un fichier ou un répertoire " bar " n'importe où, directement sous le répertoire " foo ".

  • Un " " de queue /** " correspond à tout ce qui se trouve à l'intérieur. Par exemple, " abc/** " correspond à tous les fichiers du répertoire " abc ", par rapport à l'emplacement de l'adresse .gitignore avec une profondeur infinie.

  • Une barre oblique suivie de deux astérisques consécutifs puis d'une barre oblique correspond à zéro ou plusieurs répertoires. Par exemple, " a/**/b " correspond " a/b ", " a/x/b ", " a/x/y/b " et ainsi de suite.

  • Les autres astérisques consécutifs sont considérés comme non valides.

162voto

ptyx Points 1788

Je ne l'ai jamais essayé, mais git help ignore suggère que si vous mettez un .gitignore con *.js en /public/static il fera ce que vous voulez.

Note : assurez-vous de vérifier également la réponse de Joeys ci-dessous : si vous voulez ignorer les fichiers dans un sous-répertoire spécifique, alors un .gitignore local est la bonne solution (la localité est bonne). Cependant, si vous avez besoin que le même modèle s'applique à l'ensemble de votre repo, alors la solution ** est meilleure.

91voto

Adam Sharp Points 1614

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.

21voto

Tuhin Mitra Points 143

J'ai essayé d'ouvrir le .gitignore dans mon vscode, windows 10 . Vous pouvez y voir les fichiers ignorés ajoutés précédemment (s'il y en a).

Pour créer une nouvelle règle permettant d'ignorer un fichier dont l'adresse est (.js) ajoutez l'extension du fichier comme ceci :

*.js

Cela ignorera toutes les .js dans votre git dépôt.

Pour exclure un certain type de fichier d'un répertoire particulier, vous pouvez ajouter ceci :

**/foo/*.js

Cela ignorera tous les fichiers .js se trouvant uniquement dans le répertoire /foo/.

Pour un apprentissage détaillé, vous pouvez visiter : à propos de git-ignore

11voto

Thiago Ramos Points 11

Pour ignorer les fichiers non suivis, il suffit d'aller dans .git/info/exclude. Exclude est un fichier contenant une liste d'extensions ou de fichiers ignorés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X