.gitignore忽略文件,即使没有规则指定它

时间:2017-01-13 00:31:04

标签: git gitignore

这是我的.gitignore文件:

smarty/templates_c
config.codekit
components/**/styles/
components/**/js/
!components/root/js-dev/plugin/select2-4.0.3/dist/js/
!components/root/js-dev/plugin/chartjs/
.sass-cache/
/node_modules/
/dbv-parkrooau/
/pma-parkrooau/
count.php

因此,如果我在components/foo/js-dev/main.js内进行更改,那么.gitignore将跟踪其更改,并将其包含在我的存储库中;这很好。

但是,我有一个位于components/theygo/js-dev/shoppingcart.js的文件 - .gitignore 跟踪此文件的更改,原因超出了我的要求。 components/theygo/js-dev/main.jscomponents/root/js-dev/main.js一样正常,我到目前为止创建的每个其他JavaScript文件都是如此 - 只是这个文件,我不知道为什么。

如果我从components/**/js/中删除.gitignore,它会跟踪该文件,但也会跟踪jscomponents内任何目录内!components/theygo/js-dev/shoppingcart.js 子目录中的所有文件。

如果我加上这一行:

List<string> strings= new List<string>
{
    "some-name-(1).jpg",
    "some-name-(5).jpg",
    "some-name-(5.1).jpg",
    "some-name-(6).jpg",
    "some-name-(12).jpg"
};

它正确跟踪文件。

有人可以解释为什么会发生这种情况,以及我可以做些什么来最好地解决这个问题,而不是添加一个脏的包含声明?

2 个答案:

答案 0 :(得分:3)

首先提交并推送您当前的所有更改。 然后,您必须删除所有跟踪的文件并将其重新添加 使用以下命令

git rm -r --cached .
git add .
git commit -m ".gitignore is now working"

答案 1 :(得分:0)

你的子目录中是否有.gitignore? 基于你的.gitignore,我也尝试了确切的文件夹结构,这个文件将正确跟踪