如何在我的Git仓库中删除一个大的pack文件?

4
我有一个只有一个分支的git仓库,其中一个同事推送了一些大文件。在我删除了这些大文件之后,该仓库大小为约200MB,但由于一个巨大的.git/pack文件夹,git文件夹仍然为1.3GB。
到目前为止,我尝试过以下方法(基于其他SO答案,但似乎并没有帮助我):
- BFG工具 -> 我摆脱了大文件,但pack文件夹仍然是1.3GB。 - git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch BIG_FILES' --prune-empty -> 我成功重写了历史记录,在GitHub网站上的历史提交中不再提到大文件。 - git repack -a -d -f --depth=250 --window=250 -> 无法使包更小。 - git reflog expire --expire=now --all && git gc --prune=now --aggressive -> 作为git repack的替代方案,但效果并不更好。 - git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin -> 没有用。 - 运用本地克隆技巧 — file:// —> 仍然,pack大小为1.3GB。
接下来应该采取什么措施?

只要你在之后进行“清理”,git filter-branch 应该可以正常工作。从你的问题中并不清楚为什么没有成功。 - Jeff Puckett
你是指某种清理git clean,还是指重新打包/垃圾回收? - Nibor
2
正确的顺序是:(1)删除refs/original/,(2)reflog过期,(3)gc。理论上,步骤1和2可以以任何顺序进行,但步骤3绝对需要最后执行。然而,如果您最后进行了克隆操作,那也应该可以。 - torek
如果您从Github上进行全新的克隆,它也很大吗? - Roman
@Roman:是的。不过我时间有限,所以我移除了所有历史记录,从一个全新的、小的repo开始。 - Nibor
@torek:谢谢,这是以后参考的。 - Nibor
2个回答

0

请仔细阅读!

是的,我知道这个话题已经是4年前的了,但我今天才看到它(2020年12月17日)。

我为自己做了这个,它对我有用,但对你可能有用也可能没有

对我来说

“历史”不是问题,但我的问题是“pack”文件, 它的大小超过了项目文件 (我只想将我的vim配置保留为.7zip格式 .7zip文件只有40 MB,但历史文件却有500 MB 当我尝试将其拉回新的设置机器时,这对我来说是一个大问题 因为我的网络连接很慢),所以大小对我很重要。


如果你这样做,你将失去与项目相关的所有历史记录


我所做的是:

  1. 打开终端(我使用的是Manjaro 20),输入cd到我的项目文件夹,然后输入rm -rf .git

  2. 运行git init(这个仓库曾经有3个分支master,desktop,laptop)现在我运行git checkout -b main创建一个名为main的新分支并对README.md文件进行一些编辑,保存文件,然后输入git status,你会看到一些未跟踪的文件,现在添加它们git add .将所有内容添加,然后提交更改git commit -m“你的消息”,然后运行git push -u origin main只需推送到我们创建的新分支。

  3. 进入您的git仓库,然后将默认分支(在我的情况下是master)更改为刚刚创建的新分支,然后删除所有分支(master,desktop,laptop),因为我现在使用main作为默认分支

  4. 回到终端,如果我想要master分支,我运行git checkout -b master,然后我对README.md文件进行一些编辑,然后git add .,接着git commit -m“推送消息”,最后git push -u origin master,现在我有了一个master分支

  5. 回到浏览器,我只需从main分支切换到master作为默认分支

这就是我所做的一切,对我来说它可行,但正如我所提到的,你会失去所有的历史记录。


-2

最简单的方法是下载该分支,删除您不需要的所有内容并创建另一个存储库。否则,如果您可以访问Github,则可以在那里管理文件。但我认为最好的解决方案是下载它并创建一个干净的新分支,没有任何缓存文件或其他东西。


这将丢失您的所有版本控制历史记录。 - Jeff Puckett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接