gitignore:忽略子文件夹中的所有内容,除了具有特定扩展名的文件

gitignore: Ignore everything from subfolder except files with specific extensions

我有点不知所措 git忽略 Whosebug 上的相关问题,但找不到与我目前遇到的相同问题的问题:

这是我的文件结构:

➜  main git:(master) ✗ tree
.
└── lib
    ├── folder1
    │   ├── sub1
    │   │   └── test.txt
    │   ├── test.md
    │   └── test.txt
    └── folder2
        ├── sub1
        │   └── test.txt
        ├── test.md
        └── test.txt

5 directories, 6 files

我想排除 lib 文件夹,但包含扩展名为“.txt”的每个文件。

这是我当前的.git忽略文件:

➜  main git:(master) ✗ cat .gitignore
/lib/
!/lib/**/*.txt

不幸的是,整个 lib 文件夹被排除在外,并且没有包含任何文本文件。

我也尝试了无数其他模式,但我最终要么 lib 文件夹被 git 忽略,要么 lib 文件夹包含在其所有文件中。

我不必在 .gitignore 中指定每个子文件夹(如 !folder1/!folder2/)。

以下作品:

lib/**/*.*
!lib/**/*.txt