.gitignore没有正确列入特定文件的白名单

时间:2016-12-09 15:37:30

标签: git

-public/
--dist/
----external/
------external-resource.js
----main.js
----main.css
----favicon.ico

我有这个目录结构,在我的.gitignore中我有这些条目:

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

我希望git忽略整个public / dist /目录,但是将favicon.ico和整个外部/目录列入白名单。

我使用WebStorm并为灰色gitignored的项目着色。它突出显示了favicon.ico和external /目录,使得它们似乎被排除在gitignore之外,但是git没有看到这些文件。

如果我尝试发出命令:

git add public/dist/favicon.ico

它大叫说文件被忽略了,我不得不强迫它添加它。

为什么会这样?我读过的所有东西都让我觉得我的gitignore是正确的(甚至是WebStorm)

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

1 个答案:

答案 0 :(得分:3)

这是按预期工作的。来自gitignore手册页:

  

如果排除该文件的父目录,则无法重新包含文件。

您需要编写如下规则:

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

这里尾随*表示差异 - 你不是忽略了dist目录本身,而是忽略了其中的所有内容,这是不同的。然后,您可以有选择地重新包含单个文件。