web-dev-qa-db-fra.com

git ignore tous les fichiers d'un certain type, à l'exception de ceux d'un sous-dossier spécifique

J'ai une structure de répertoire comme celle-ci:

  • racine
    • dossier1
      • abc.json
      • def.json
      • somedir
        • plus.json
    • dossier2
      • qwe.json
      • rty.json
    • spec
      • mock1.json
      • mock2.json
      • somedir
        • more_mocks.json

Maintenant, en utilisant un .gitignore, je veux ignorer tous les fichiers *.json, à l'exception de ceux du fichier spec. Je ne veux pas utiliser un .gitignore dans folder1 et folder2 parce qu'il y en a une tonne et qu'ils vont s'ajouter à beaucoup, et je suis sûr que j'oublierai de déplacez le fichier .gitignore de droite à la place.

De plus, il peut y avoir plus de répertoires imbriqués avec des fichiers json, et cette règle doit également s'appliquer à tous les sous-répertoires.

Alors, comment puis-je ignorer tous les fichiers d'un type, à l'exception d'un certain sous-répertoire?

168
Alex Wayne

Un préfixe facultatif ! qui annule le motif; tout fichier correspondant exclu par un modèle précédent sera à nouveau inclus. Si un motif négatif correspond, cela remplacera les sources de motifs de priorité inférieure.

http://schacon.github.com/git/gitignore.html

*.json
!spec/*.json
263
Amber