清理Git存储库的问题

问题描述

我有一个专用的远程git存储库,多年来我一直在使用该项目。在进行一些测试和错误修复的过程中,我无意中上传了一些非常大的文件MysqL转储,每个转储> 100 MB)和2个包含测试文件的目录(总计8 GB)。我现在无法克隆或更新存储库。那是之前的几次提交,而不是当前的提交。意识到问题后,我将条目添加到.gitignore(*。sql,MemorabiliaJSON / documents,designs /)

我正在研究如何删除这两个文件夹和文件。 BFG似乎很有希望,但我什至无法超越第一步:

$ git clone --mirror <path to repo>memorabilia-JSON.git
cloning into bare repository 'memorabilia-JSON.git'...
remote: Enumerating objects: 15031,done.
remote: Counting objects: 100% (15031/15031),done.
error: pack-objects died of signal 9782/13739)   
error: git upload-pack: git-pack-objects died with error.
fatal: git upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
fatal: early EOF
fatal: index-pack Failed

git-filter-branch是另一个选择,但似乎更容易出错。

关于如何删除这些大目录和* .sql文件的任何想法?还有其他原因导致此问题吗?

谢谢!

标记

更新: 根据Kay的建议,我在容纳远程存储库的远程计算机上对远程存储库进行了本地镜像复制。在那里,我使用了BFG和git-statistics将镜像的远程存储库从8GB减少到145MB。然后,我在git日志中查找了更新的镜像存储库和本地计算机(而不是远程计算机)上的本地存储库,发现来自本地存储库的最后4个提交不在更新的镜像远程存储库中。所以,我正处于十字路口。...

选项1 将更新的镜像存储库推送到远程存储库,因此现在已修复。我认为,如果我将本地存储库提交到更新的远程服务器,则所有大文件都将包括在内(因为它们位于我的本地git存储库中),并且我回到了开始的位置。

选项2 重新开始,镜像我的本地存储库,使用我用于镜像远程存储库的过程对其进行修复,将更新的镜像本地存储库推送到我的本地存储库,以便现在本地存储库是干净的,最后四个提交就位。然后,我将本地存储库推送到远程服务器,以用更新的本地存储库替换远程计算机,现在,远程磁盘是干净的,远程计算机中有4个丢失的提交。

选项2听起来是最好的做法吗?我不是git专家,所以我对这一切的工作方式不确定,并担心我可能会丢失本地回购中的所有138次提交!

谢谢

标记

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)