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

Git-忽略特定文件夹中包含的某些文件,git,msysgit,Git,Msysgit,我正在使用msysgit,并且有一个项目树,其中包含许多bin/文件夹。使用项目根目录中的.gitignore文件,我需要忽略项目树中任何位置的bin/文件夹中的所有.dll文件。我尝试过“bin/*.dll”,但不起作用,我假设它只对项目根目录中的bin/文件夹起作用。2016年8月更新(七年后,Git 2.9.3/Git 2.10) 这对任何深度都有效 原始答复(2009年,Git 1.6) 您是否尝试过: **/bin/*.dll 它与我的msysgit1.6.3(Git工作区根目录下

我正在使用msysgit,并且有一个项目树,其中包含许多bin/文件夹。使用项目根目录中的.gitignore文件,我需要忽略项目树中任何位置的bin/文件夹中的所有.dll文件。我尝试过“bin/*.dll”,但不起作用,我假设它只对项目根目录中的bin/文件夹起作用。

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

这对任何深度都有效


原始答复(2009年,Git 1.6)

您是否尝试过:

**/bin/*.dll
它与我的msysgit1.6.3(Git工作区根目录下的
.gitignore
文件)一起工作

实际上,上面的代码只会忽略“
x/bin/z.dll
”,而不会忽略“
x/y/bin/z.dll

另一种语法可以是:

**/*/bin/*.dll
但那只能得到深度3,而不是深度2

因此,如果您没有太多需要忽略*.dll的地方,最简单的解决方案仍然是在那些“bin”目录中创建一个本地.gitignore文件

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

bin/*.dll
**/bin/*.dll
**/*/bin/*.dll
**/**/*/bin/*.dll

以此类推,全部放在一个.gitignore文件中。

我的文件中只有
/bin
,它似乎可以工作。它忽略整个文件夹(与其中的特定文件相反)

以下是截至目前为止的完整内容(仍在发展中)

*/宾为我工作


我认为*/bin/也会这样。

只是遇到了一个类似的问题并意识到:文件已经被添加并签入git

如何识别差异:Git没有将文件显示为“新建”,而是显示为“已修改”。这个细节花了我不少时间


如果这是问题所在,只需“git rm”这些文件,然后重新开始。突然,.gitignore开始按预期工作。

.gitignore在windows上似乎不起作用。我使用的是msysgit v1.7.6beta版,但它的工作方式与.gitignor手册页的工作方式不同。现在,如果我将.gitignore文件的内容复制到$GIT_DIR/info/exclude文件中,在repo内部,一切都正常


因此,令人遗憾的是,这不会被复制,但总比没有好。

根据您使用的语言,您可以从

例如,如果您使用的是java,那么可以使用


还允许您在线创建gitingore文件,您只需输入操作系统、IDE或编程语言,并基于它,它将为您提供gitingore文件。使用它,您可以轻松地为项目创建gitignore文件。

我也在使用msysgit 1.6.3,但模式*/bin/.dll不起作用。我将该模式添加到根目录中的.gitignore中,然后从根目录中尝试“git add--dry run*.dll”,它列出了项目树的bin/文件夹中包含的.dll文件。我确认“git add--dry run*.dll”仅添加非忽略的.dll。您可以发布.gitignore文件的内容吗?您是对的:“*/bin/.dll”只适用于“x/bin/z.dll”(深度2),而不适用于“x/y/bin/z.dll”(深度3)。我不确定gitignore模式是否支持目录的递归检测。。。我已经修改了我的答案。这个问题()似乎有一个解决方案,但我无法使它对给定目录的所有深度都起作用而忽略…它只对深度1起作用:“模式中的通配符将与路径名中的/不匹配”,那么什么可行呢*/垃圾箱*?我想我后来做了。。。对于另一个目录,这对我来说很有效,但这是我在Git.Git rm-f-r/path中所做的最愚蠢的事情,它强制并删除一个文件夹。
bin/*.dll
**/bin/*.dll
**/*/bin/*.dll
**/**/*/bin/*.dll
.svn*
obj/
bin/
*.suo
*.user
Log/
log/
*.db