Git 排除除一个以外具有特定名称的目录

Git exclude directories with specific name except one

我看到了一些与此类似的问题,也阅读了 gitignore manual,但仍然无法理解这一问题。

我想排除所有名为 lib 的文件夹(我的规则是 "lib/"),除了一个文件夹(将来可能更多)是我可以的第 3 方文件夹'改名字,在<root>/3rdparty/projectX/lib/.

我试过这个:

!lib/
lib/*
!projectX/lib/

但这也包括不在根目录下的具有 lib 文件夹的其他文件夹

是否可以将此文件夹添加为例外?怎么样?

你有几个选择。

完整路径:

lib/
!3rdparty/projectX/lib/

通配符匹配:

lib/
!*/projectX/lib/

通配符匹配任何级别的子目录:

lib/
!**/projectX/lib/

你的 gitignore 没有工作,因为它专门忽略了根目录中的 projectX 目录。