忽略git中的子目录的问题

Itt*_*tai 29 git gitignore

我有一个maven多模块项目,深度约为5级.
我现在转向git,我发现该target文件夹的很多内容被git捕获为"Unstaged Changes".
我已经google了很多搜索SO但是找不到关于如何让git忽略文件夹的整个目录树的答案target.
我的.gitignore,它位于项目的根部,看起来像这样:

.project  
.classpath
.settings/
target/
Run Code Online (Sandbox Code Playgroud)

奇怪的是,.class该下的某处存在的文件,target树,就得到由上述定义,但像文件被忽略MANIFEST.MF,pom.properties这是位于某处还是我自己的应用程序属性文件target目录树不忽略.
我已经阅读了Git Ignores和Maven目标,但该解决方案似乎对我没有用.
我也可以说,当我尝试添加target/*排除它不会改变任何东西,当我更换target/target/*那么.class文件显示为不分级为好.
我真的很感激一些指导,因为我似乎不太可能使用git和maven的人群尚未解决类似的问题.谢谢.

KL-*_*L-7 59

其中一个原因可能是您已将该文件提交到存储库.在这种情况下,添加它们.gitignore不会阻止git跟踪这些文件.要解决这个问题,首先应该从存储库中删除它们:

git rm -r target/
Run Code Online (Sandbox Code Playgroud)

(如果你的项目有模块,则需要包括路径到相关的模块的目标:
git rm -r parent_project/module_name/target/)

如果要从存储库中删除目录而不是从磁盘中删除目录,可以使用以下--cached选项:

git rm -r --cached target/
Run Code Online (Sandbox Code Playgroud)

在任何情况下,你应该然后提交该删除的存储库(你可以做到这一点在同与添加提交target/.gitignore,如果你愿意的话).


小智 5

target
target/*
Run Code Online (Sandbox Code Playgroud)

在 gitignore 中添加这些行以忽略目标文件和目标中的所有文件。这不应再跟踪该文件夹及其内容。