2011-09-30 100 views
6

我知道有很多关于如何忽略目录的问题,直到现在我通常没有任何问题,但现在我陷入了一些我不明白的问题。为什么git忽略除一个目录以外的所有文件?

这里是我的目录结构:

/src 
/war 
    com.example.MyProject/ 
    WEB-INF/ 
    classes/ 
    deploy/ 
    lib/ 

我想忽略的目录classes/deploy/com.example.MyProject/的内容,这里是我的.gitignore文件:

*.log 
war/WEB-INF/classes/ 
war/WEB-INF/deploy/ 
com.example.MyProject/ 

文件下com.example.MyProject/是自动生成,git会忽略除了名为com.example.MyProject.nocache.js的文件以外的所有文件。事实上,当我做git status我得到:

# On branch myBranch 
# Changed but not updated: 
# (use "git add <file>..." to update what will be committed) 
# 
#  modified: .gitignore 
#  ...... 
#  modified: war/com.example.MyProject/com.example.MyProject.nocache.js 

为什么混帐拒绝忽略该目录中单独的文件?我究竟做错了什么?

回答

5

如果一个文件已被Git跟踪,将该文件添加到.gitignore不会阻止Git跟踪它。你需要做的git rm --cached <file>保持文件在你的树,然后忽略它

+0

哑巴我删除!那是偶然在以前的提交中添加的:我只是不得不删除它。谢谢! – MarcoS

+0

而对于egit用户project> team> untrack,这将删除该文件夹中的所有文件(取消跟踪它们),然后提交更改 –

5

如果该文件已经被添加到索引,它仍然会留在了那里,即使你把它添加到.gitignore文件。

尝试从git的索引中删除文件:

git rm --cached war/com.example.MyProject/com.example.MyProject.nocache.js 

--cached选项可以确保文件保持你的文件夹中,只是被从索引

+1

+1作为补充说明:“--cached选项确保文件保留在您的文件夹,只是从索引中删除“。 –

相关问题