如何递归地.gitignore文件

时间:2013-05-14 18:54:35

标签: git gitignore

我正在尝试在.gitignore文件中避免使用以下模式。

MyPrject/WebApp/Scripts/special/*.js
MyPrject/WebApp/Scripts/special/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*/*.js
MyPrject/WebApp/Scripts/special/*/*/*/*/*/*/*.js

我们尝试过:

MyPrject/WebApp/Scripts/special/**.js
MyPrject/WebApp/Scripts/special/**/*.js

然而这不起作用。这是Windows上的git。有没有更简洁的方法来做到这一点而不重复?

4 个答案:

答案 0 :(得分:78)

从git 1.8.2开始,这个:

MyPrject/WebApp/Scripts/special/**/*.js

应根据this answer开展工作。它也适用于使用Sourcetree 1.6.12.0的Windows 7以及它安装的git版本(1.8.4-preview20130916)。

以递归方式对目录下的每个文件和文件夹进行gitignore:

MyPrject/WebApp/Scripts/special/**

答案 1 :(得分:17)

关注gitignore手册页:

  

[...] git将该模式视为适合的shell glob     fnmatch(3)使用FNM_PATHNAME标志消耗:中的通配符     该模式与路径名中的/不匹配。

因此,这显然无法在两个字符串之间指定一定数量的目录,例如specialjs之间。

尽管如此,每个目录可以有.gitignore个文件,因此在您的情况下可能包含以下内容

*.js

在以下地方

MyPrject/WebApp/Scripts/special/.gitignore

就足够了吗?

答案 2 :(得分:11)

这在osx上对我有效。

lib64/**/__pycache__/
lib/**/__pycache__/
*.py[cod]
.ipynb_checkpoints/
**/.ipynb_checkpoints/
.DS_Store
**/.DS_Store

答案 3 :(得分:1)

尝试执行git rm -r --cached MyPrject/WebApp/Scripts/special/ 您提到的目录可能已被git缓存,并将显示在未跟踪的文件中。 清除缓存后,请确保您在.gitignore上提到了它。