-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
答案 0 :(得分:3)
这是按预期工作的。来自gitignore手册页:
如果排除该文件的父目录,则无法重新包含文件。
您需要编写如下规则:
public/dist/*
!public/dist/favicon.ico
这里尾随*
表示差异 - 你不是忽略了dist
目录本身,而是忽略了其中的所有内容,这是不同的。然后,您可以有选择地重新包含单个文件。