使用 Git 排除除某些文件夹之外的所有树

Exclude all tree except some folder using Git

我有一些树结构:

/a  
/a/a  
/a/b
/b/
..  
/a/z  
/b  
.. (thousands of folders)  
/z  

如何只控制 /a/a 和 /b 文件夹?
排除文件应该是什么?
我们现在使用的方式是:

/a/*    
/c/
..  (thousands of folders)  
/z/  
!/a/a  

但是很不好看,也很难维护...

根据 this 答案,.gitignore 语法中使用了标准通配规则,因此您不能使用标准正则表达式来解决此问题。

也就是说,您可以稍微缩短 gitignore。此模式将排除除 ab:

以外的所有文件夹
[cdefghijklmnopqrstuvwxyz]

好的,我解决了!

/*
!/a/
/a/*
!/a/a/
!/b/  

原来有几千行,现在只有五行)))