我有一个maven多模块项目,深度约为5级
我现在转向git,我发现git将target
文件夹的很多内容都捕获为“Unstaged Changes”。
我已经google了很多搜索,但无法找到答案如何让git忽略target
文件夹的整个目录树。
我的.gitignore
位于项目的根目录,如下所示:
.project
.classpath
.settings/
target/
奇怪的是,位于.class
树下某处的target
文件确实被上述定义忽略,但文件如MANIFEST.MF
,pom.properties
或我自己的应用程序属性文件位于target
目录树中的某个位置,不会被忽略
我已阅读Git Ignores and Maven targets但该解决方案似乎对我不起作用
我还可以说,当我尝试添加target/*
规则时,它不会更改任何内容,当我将target/
替换为target/*
时,.class
文件显示为未分阶段好。
我真的很感激一些指导,因为我似乎不太可能使用git和maven的人群尚未解决类似的问题。感谢。
答案 0 :(得分:54)
其中一个原因可能是您已将该文件提交到存储库。在这种情况下,将它们添加到.gitignore
并不会阻止git跟踪这些文件。要解决这个问题,首先应该从存储库中删除它们:
git rm -r target/
(如果您的项目有模块,则需要将路径包含在相关模块的目标中:
git rm -r parent_project/module_name/target/
)
如果要从存储库中删除目录而不是从磁盘中删除目录,可以使用--cached
选项:
git rm -r --cached target/
在任何情况下,您都应该将该删除提交到存储库(如果您愿意,可以在同一提交中将target/
添加到.gitignore
)。
答案 1 :(得分:4)
target
target/*
在gitignore中添加这些行以忽略目标文件和目标内的所有文件。这不应该再跟踪该文件夹及其内容。
答案 2 :(得分:2)
或者,在文件夹目标上使用tortoisegit,只需选择“删除并添加到忽略列表”。