2016-12-09 52 views
1
-public/ 
--dist/ 
----external/ 
------external-resource.js 
----main.js 
----main.css 
----favicon.ico 

我有这样的目录结构,并在我的.gitignore我有这些项:的.gitignore无法正常白名单特定文件

public/dist/ 
!public/dist/favicon.ico 
!public/dist/external/ 

我希望混帐忽略整个公共/距离/目录但白名单favicon.ico和整个外部/目录。

我使用WebStorm,它为gitignored为灰色的项目着色。它突出了favicon.ico和external /目录,使它看起来像被排除在gitignore之外,但git没有看到这些文件。

如果我尝试发出命令:

git add public/dist/favicon.ico 

它破口大骂说,该文件将被忽略,我不得不迫使它添加。

这是怎么发生的?我读过的一切使它看起来像我gitignore是正确的(甚至WebStorm)

我使用Git的版本是:1.9.5.mysysgit.1

回答

3

这是按预期工作。从gitignore手册页:

如果排除该文件的父目录,则不可能重新包含文件。

你反而会需要写这样一个规则:

public/dist/* 
!public/dist/favicon.ico 

这里后*表示的区别 - 你不忽略dist目录本身BT,而忽略了它的一切,这是不同的。然后你可以有选择地重新包含一个单独的文件。

+0

这样做!我想知道为什么WebStorm让我相信它是正确的。必须是他们的gitignore解析器中的一个疏忽。 – Nick