忽略git中的子目录的问题

时间:2011-12-26 08:10:02

标签: git gitignore

我有一个maven多模块项目,深度约为5级 我现在转向git,我发现git将target文件夹的很多内容都捕获为“Unstaged Changes”。
我已经google了很多搜索,但无法找到答案如何让git忽略target文件夹的整个目录树。
我的.gitignore位于项目的根目录,如下所示:

.project  
.classpath
.settings/
target/

奇怪的是,位于.class树下某处的target文件确实被上述定义忽略,但文件如MANIFEST.MFpom.properties或我自己的应用程序属性文件位于target目录树中的某个位置,不会被忽略 我已阅读Git Ignores and Maven targets但该解决方案似乎对我不起作用 我还可以说,当我尝试添加target/*规则时,它不会更改任何内容,当我将target/替换为target/*时,.class文件显示为未分阶段好。
我真的很感激一些指导,因为我似乎不太可能使用git和maven的人群尚未解决类似的问题。感谢。

3 个答案:

答案 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,只需选择“删除并添加到忽略列表”。