我有一个包含以下内容的.gitignore文件。
*.o
*.exe
*Debug/*
*.vpb
*.vtg
*.vpwhistu
*.vpwhist
*.vtg
在我的工作目录中处理项目(修改几个文件)后,如果我这样做
git status
我得到以下输出
Workspace/playpen/boost/Debug/simple_ls.o
尽管*Debug/*
位于.gitignore
内,但为什么会发生这种情况。这不是.gitignore的全部观点。
答案 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
相同级别的BarDebug
,Debug
和.gitignore
等目录中的所有内容,但不会忽略层次结构。要忽略任何名称以Debug
结尾的目录,只需使用模式:
*Debug/
尾部斜杠告诉Git仅匹配目录,但此模式将匹配目录树的任何级别。