2011-09-30 58 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選項確保文件保留在您的文件夾,只是從索引中刪除「。 –

相關問題