首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GitHub上git存储库中大型文件的排除

GitHub上git存储库中大型文件的排除
EN

Stack Overflow用户
提问于 2017-09-17 17:28:41
回答 2查看 130关注 0票数 1

我有一个名为geoplot的项目,它用Python进行地理空间绘图。其代码是通过git在GitHub上分发的。你可以在这里查一下

作为该包开发过程的一部分,我上传并存储在geoplot repo中的一个名为data/的文件夹,该文件夹包含大量不同格式的数据文件。这些数据文件用于填充免费示例图库中的示例。

然而,这些文件使整个存储库的大小增加到~150 MiB (问题)。这显然太过分了,现在是我摆脱它们的时候了。

问题是,我不仅需要从当前的HEAD中删除这些文件,还需要将这些文件从整个git历史记录中删除。我尝试了一种使用git rebase的手动方法,但没有起作用。然后,我尝试了BFG Repo-Cleaner工具,就像关于这件事的典型问题中推荐的那样。

BFG摆脱我的档案好了-他们不再存在于历史上的任何地方。但是,回购的大小(如运行https://github.com/ResidentMario/geoplot.git时所见)根本没有下降!

下面是我尝试过的内容(减去打印输出):

代码语言:javascript
复制
java -jar ../bfg-1.12.15.jar --delete-folders "data" .
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push --set-upstream https://github.com/ResidentMario/geoplot.git master --force

完整的打印输出是在一个关于GitHub的问题上

我做错什么了?我如何诊断和消除这一浪费空间的来源?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-17 18:18:17

我的确提到了早在2010年,但也提到了删除旧对象

(注:repack)

首先,检查是否再次克隆您的回购,您仍然有相同的大小。

正如Aleksey Bilogur执行部分提到的在评论中

  • 您需要确保标记没有引用旧数据,然后也需要强制推送所有标记和分支(不仅仅是master)。 吉特推-标签起源-力量
  • 生成的数据必须从回购历史记录中删除。
票数 1
EN

Stack Overflow用户

发布于 2017-09-17 23:07:50

这听起来像是一个没有外部工具就可以通过利用filter-branch来解决的问题。

如果要删除data目录的所有历史记录,可以从回购目录的根目录运行以下内容。

代码语言:javascript
复制
git filter-branch --index-filter 'git rm --cached --ignore-unmatch -r path/to/data' HEAD

这将改变当前HEAD指针祖先项中的每个提交。然后,您必须更新所有其他分支和标记,以这些新创建的提交,以完全删除行李从您的回购。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46266906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档