我知道有很多关于如何忽略目录的问题,直到现在我通常都没有遇到任何问题,但现在我遇到了一些我不理解的问题。
这是我的目录结构:
/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/
下的文件会自动生成,除了名为com.example.MyProject.nocache.js
的文件外,git会忽略所有文件。事实上,当我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
为什么git拒绝忽略该目录中的单个文件?我做错了什么?
答案 0 :(得分:6)
如果Git已经在跟踪文件,则将文件添加到.gitignore
不会阻止Git跟踪它。您需要执行git rm --cached <file>
将文件保留在树中,然后忽略它
答案 1 :(得分:5)
如果该文件已添加到索引中,即使您将其添加到.gitignore
文件,它仍会保留在那里。
尝试从git索引中删除文件:
git rm --cached war/com.example.MyProject/com.example.MyProject.nocache.js
--cached
选项可确保文件保留在您的文件夹中,并且只是从索引中删除