Git - 忽略特定文件夹中包含的某些文件

19 git msysgit

我正在使用msysgit,并且项目树中包含许多bin /文件夹.使用项目根目录中的.gitignore文件,我需要忽略项目树中任何位置的bin /文件夹中的所有.dll文件.我试过"bin/*.dll",但这不起作用,我认为它只是对项目根目录中的bin /文件夹起作用.

小智 14

刚遇到类似问题并意识到:文件已经添加并检入git.

如何识别差异:Git没有将文件显示为"新",而是显示为"已修改".这个细节让我花了很长时间......

如果这是问题,只需"git rm"这些文件并重新开始.突然,.gitignore开始按预期工作.


Che*_*try 13

我只是/bin在我的文件中,它似乎工作.它忽略整个文件夹(与其中的特定文件相对)

以下是截至目前的完整内容(仍在不断发展).

.svn*
obj/
bin/
*.suo
*.user
Log/
log/
*.db
Run Code Online (Sandbox Code Playgroud)


Von*_*onC 11

2016年8月更新(七年后,Git 2.9.3/Git 2.10)

**/bin/*.dll
Run Code Online (Sandbox Code Playgroud)

这确实适用于任何深度.


原始答案(2009年,Git 1.6)

你试过了吗:

**/bin/*.dll
Run Code Online (Sandbox Code Playgroud)

它适用于我的msysgit1.6.3(.gitignore在Git工作区的根目录下有一个文件).

实际上,上面只会忽略' x/bin/z.dll',而不是' x/y/bin/z.dll'.

另一种语法可能是:

**/*/bin/*.dll
Run Code Online (Sandbox Code Playgroud)

但那只会得到深度3,而不是深度2!

因此,如果你没有太多需要忽略*.dll的地方,最简单的解决方案仍然是那些'bin'目录中的本地.gitignore文件......

或者是涵盖主要第一深度的指令集合:

bin/*.dll
**/bin/*.dll
**/*/bin/*.dll
**/**/*/bin/*.dll
Run Code Online (Sandbox Code Playgroud)

等等,一个.gitignore文件.