139

我试图在我的.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

4 回答 4

147

从 git 1.8.2 开始,这个:

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

应该根据这个答案工作。它也适用于我在 Windows 7 中使用 Sourcetree 1.6.12.0 和它安装的 git 版本(1.8.4-preview20130916)。

递归地 gitignore 目录下的每个文件和文件夹:

MyPrject/WebApp/Scripts/special/**
于 2015-01-02T12:09:12.367 回答
24

以下 gitignore 手册页:

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

因此,这清楚地表明没有办法在两个字符串之间指定一定数量的目录,例如 betweenspecialjs

不过,您可以为.gitignore每个目录创建一个文件,因此在您的情况下可能包含以下内容

*.js

在以下地方

MyPrject/WebApp/Scripts/special/.gitignore

就足够了吗?

于 2013-05-14T19:29:53.540 回答
20

这适用于我在 osx 上。

lib64/**/__pycache__/
lib/**/__pycache__/
*.py[cod]
.ipynb_checkpoints/
**/.ipynb_checkpoints/
.DS_Store
**/.DS_Store
于 2020-01-17T14:09:04.513 回答
4

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

于 2020-01-22T05:44:04.590 回答