git ігнорує всі файли певного типу, крім файлів у певній підпапці


194

У мене така структура каталогів:

  • корінь
    • папка1
      • abc.json
      • def.json
      • сомедір
        • more.json
    • папка2
      • qwe.json
      • rty.json
    • спец
      • mock1.json
      • макет2.json
      • сомедір
        • more_mocks.json

Тепер, використовуючи .gitignoreI, я хочу ігнорувати всі *.jsonфайли, крім файлів у spec. Я не хочу використовувати .gitignoreв folder1і folder2тому, що їх є багато, і їх буде додано багато, і я впевнений, що забуду перемістити потрібний .gitignoreфайл на місце.

Крім того, може бути більше вкладених каталогів з файлами json, і це правило також має застосовуватися і до всіх підкаталогів.

Тож як я ігнорую всі файли типу, крім певного підкаталогу?

Відповіді:


304

Необов’язковий префікс, !який заперечує візерунок; будь-який відповідний файл, виключений за попереднім шаблоном, знову буде включений. Якщо заперечений візерунок збігається, це замінить джерела шаблонів нижчих пріоритетів.

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

*.json
!spec/*.json

4
Ви також можете додати .gitignore до специфікацій, що містять! / *. Json, якщо ви хочете.
Девід Мітчелл

2
Дякую! Хоча в моєму випадку я зрозумів, що я взагалі нічого не хочу ігнорувати в своєму каталозі специфікацій. Тож я в змозі відійти від дуже простого !spec. Працює як шарм.
Алекс Уейн

7
Хоча відповідь Амбер працює, коли spec - це каталог під найвищим рівнем (тобто / spec), він не працює для мене, коли spec є підкаталогом, наприклад / a / spec або a / b / spec. Використовуючи git 1.7.5.4
Пітер Льюїс

7
@PeterLewis (для майбутніх відвідувачів): такий випадок можна вирішити, створивши файл .gitignore у відповідному підкаталозі.
cmbuckley

3
Це рішення для мене лише ігнорувало jsonфайли specбезпосередньо, а не ті, що знаходяться у somedirпідкаталозі питання. Мені потрібно було скористатися !spec/**/*.jsonдля того, щоб переконатися, що more_mocks.jsonбуло вчинено також.
Лейт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.