2009-06-13 208 views
81

任何人都知道是否可以忽略由git管理的文件结构中的特定目录的所有实例。Git忽略和Maven目标

我正在寻找排除maven项目中的所有'目标'文件夹与一些子模块。我知道我可以明确地排除顶层.gitignore中的每一个,但是我真的很希望能够指定一个像**/target/*这样的模式,让它自动忽略子目录中的实例?

这可能吗?

+0

使用什么配置进行这项工作? * /。settings/*只会忽略'xxx/.settings/*',而不是'.settings/*'或'xxx/yyy/.settings/*':忽略模式似乎不会递归应用。另见http://stackoverflow.com/questions/971465/git-ignore-certain-files-contained-in-specific-folders。 – VonC 2009-06-14 13:46:25

回答

67

可以使用.gitignore文件中的模式。请参阅gitignore man page。模式*/target/*应忽略任何名为目标的目录及其下的任何目录。或者您可以尝试*/target/**忽略目标下的所有内容。

+4

谢谢!对于任何其他人来说,这是一个.gitignore的内容,可以跳过美国日食和日食嫌疑犯。 目标/ * * /目标/ * .metadata * tar.gz的 的.classpath 的.project * /。设置/ * – sgargan 2009-06-14 03:26:48

+2

用什么配置你在做这项工作? * /。settings/*只会忽略'xxx/.settings/*',而不是'.settings/*'或'xxx/yyy/.settings/*':忽略模式似乎不会递归应用。另见http://stackoverflow.com/questions/971465/git-ignore-certain-files-contained-in-specific-folders。 – VonC 2009-06-14 13:45:55

193

.gitignore文件在根目录下确实适用于所有子目录。我看起来像这样:

.classpath 
.project 
.settings/ 
target/ 

这是一个多模块maven项目。所有的子模块都是使用m2eclipse作为单独的eclipse项目导入的。我没有进一步的.gitignore文件。事实上,如果你在gitignore man page看:

模式在相同的目录路径,或以任何父目录.gitignore文件 读...

所以这应该适用于您。

1

正如评论已经指出的Abhijeet你可以添加一行:

/target/** 

排除文件夹\.git\info\

然后,如果您想要摆脱远程仓库中的那个target文件夹,您需要先从本地存储库手动删除此文件夹,然后进行提交并将其推送。那是因为git会首先显示目标文件夹的内容。