2011-12-30 72 views
2

我试图忽略quickfix子目录中的所有.o文件。该文件是:quickfix子目录中的gitignore .o文件

quickfix/examples/executor/C++/Application.o 

我曾尝试以下:

**/quickfix/**o 
quickfix/*o  
quickfix/**/*o 

编辑:一种选择是一个的.gitignore文件添加到的quickfix子目录带*的.o模式。有谁知道为什么上述模式不起作用?

+0

嗯。 gitignore(5)没有提及双星的任何特殊含义,尽管存在 - 看似有缺陷的网站 - 声称它做了某事。毕竟,gitignore(5)比较清楚,它的通配符是根据fnmatch(3)规则解释的,而不是zsh/rsync-style。 – 2011-12-30 06:08:06

回答

2

gitignore手册页指定模式如何匹配。相关规则,你的情况是:

混帐与FNM_PATHNAME标志对待模式为适合于通过的fnmatch(3)消费壳水珠:在模式通配符不匹配/的路径名。

所以,quickfix/*o不起作用,因为*将不匹配/。并且**根本不被fnmatch识别,因此也不被Git识别。

5

在quickfix目录中创建一个新的.gitignore,其中包含*.o。这将适用于quickfix目录及其所有子目录。

编辑:一个选项是添加一个.gitignore文件到* .o模式的quickfix子目录。有谁知道为什么上述模式不起作用?

凯文巴拉德的评论,以及米帕迪的回答很好地解释它。

+0

解决我的问题 - 有谁知道为什么模式不工作,但? – Taras 2011-12-30 03:39:30

+2

@Taras:因为git不支持'**'glob扩展,如果没有这个扩展,就没有办法表达你想要的东西。 – 2011-12-30 03:52:30