Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git克隆和拉取忽略大文件_Git - Fatal编程技术网

git克隆和拉取忽略大文件

git克隆和拉取忽略大文件,git,Git,情况是这样的。Ad hock分析存储库,每个分析都有一个目录。每个目录都包含一个与一个或多个数据文件连接的脚本,这些文件的格式不同,大小也不同(有时相当大)。没有数据的脚本通常是无用的,因此我们希望存储数据文件。另一方面,有时查看脚本而不必被迫下载相关的数据文件(以确定如何进行某些分析)是很有用的 我们绝对不希望将数据存储在单独的存储库中(运行时问题、将脚本与数据文件关联等) 分析内容: git子模块-分离的repo,所有内容都将远离脚本(不在相同的目录中,因此随着时间的推移会变得混乱) gi

情况是这样的。Ad hock分析存储库,每个分析都有一个目录。每个目录都包含一个与一个或多个数据文件连接的脚本,这些文件的格式不同,大小也不同(有时相当大)。没有数据的脚本通常是无用的,因此我们希望存储数据文件。另一方面,有时查看脚本而不必被迫下载相关的数据文件(以确定如何进行某些分析)是很有用的

我们绝对不希望将数据存储在单独的存储库中(运行时问题、将脚本与数据文件关联等)

分析内容:

  • git子模块-分离的repo,所有内容都将远离脚本(不在相同的目录中,因此随着时间的推移会变得混乱)
  • git钩子——旨在为推送请求应用约束或附加操作,如上所述——每个人都应该能够上传任何文件(此外:我们没有权限应用服务器端钩子)
我想到的想法是,从存储库中提取或克隆某些位置或某些文件(即>>50MB)是很方便的。只是不要传输不需要的数据可能吗?


如果某些文件未涉及后续提交,则从未来推送的角度来看,这些文件是不必要的。可能(甚至可以肯定)我对git的底层机制缺乏一定的了解。我非常感谢您的澄清。

Git sparse checkout允许您设置subdirs是否要签出,等等。尽管如此,我不认为它可以基于任何其他因素(例如大小)来完成此操作。

Git clone--无签出--filter=blob:limit=100m

当服务器最终实现时,这实际上只允许获取小于给定大小的文件

然后你必须签出所有文件,但大文件除外。一个可能有效的简单策略是
git rev list--filter=blob:limit=100 | xargs
,但我现在懒得测试它

有关更多详细信息,请参阅此答案:

git LFS

这是一个已经可以在GitHub和GitLab上使用的解决方案

您只需在LFS中跟踪您的大blob,然后不使用LFS进行克隆

最后手动提取您可能需要的任何缺失的LFS文件:


据我所知,git clone下载所有数据仍然存在问题,对吗?是的,如果你每次都从零开始克隆,恐怕没有多大用处。我快速搜索了一下,也许你已经找到了,但我发现这个页面实际上非常全面,关于规模过大的git回购是一个痛苦的话题,原因很多,并且有各种各样的修复/帮助建议:它有一些额外的建议和信息,你可能会觉得有用。
GIT_LFS_SKIP_SMUDGE=1 git clone SERVER-REPOSITORY
git lfs pull --include "*.dat"