.gitignore文件没有正确忽略

时间:2016-07-30 10:27:21

标签: git github

我有一个包含以下内容的.gitignore文件。

*.o
*.exe
*Debug/*
*.vpb
*.vtg
*.vpwhistu
*.vpwhist
*.vtg

在我的工作目录中处理项目(修改几个文件)后,如果我这样做

git status

我得到以下输出

Workspace/playpen/boost/Debug/simple_ls.o

尽管*Debug/*位于.gitignore内,但为什么会发生这种情况。这不是.gitignore的全部观点。

3 个答案:

答案 0 :(得分:1)

.gitignore仅适用于尚未成为远程存储库一部分的文件。我的猜测是,当您将规则添加到simple_ls.o时,.gitignore已被跟踪。如果您希望Git忽略它,那么您首先必须通过以下方式将其从远程存储库中删除:

git rm --cached Workspace/playpen/boost/Debug/simple_ls.o

此后,.gitignore模式将阻止将此文件添加到存储库。

答案 1 :(得分:0)

您修改了.gitignore吗?该文件是否已被跟踪?因为它也应该忽略.o文件。

如果忽略调试文件夹,则应将规则修改为: **Debug/

答案 2 :(得分:0)

在您的模式中使用/(除了作为模式的最后一个字符)将模式锚定在包含.gitignore文件本身的目录层次结构的位置。

这意味着*Debug/*会忽略与FooDebug相同级别的BarDebugDebug.gitignore等目录中的所有内容,但不会忽略层次结构。要忽略任何名称以Debug结尾的目录,只需使用模式:

*Debug/

尾部斜杠告诉Git仅匹配目录,但此模式将匹配目录树的任何级别。