我正在尝试在.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。有没有更简洁的方法来做到这一点而不重复?
答案 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标志消耗:中的通配符 该模式与路径名中的/不匹配。
因此,这显然无法在两个字符串之间指定一定数量的目录,例如special
和js
之间。
尽管如此,每个目录可以有.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
上提到了它。