如何从我的Git仓库中删除未被引用的blob

164

我有一个GitHub代码库,其中有两个分支-masterrelease

release分支包含二进制分发文件,这些文件导致存储库的大小非常大(超过250 MB),因此我决定进行清理。

首先我通过git push origin :release删除了远程release分支。

然后我删除了本地的release分支。首先我尝试使用git branch -d release,但Git说"error:The branch 'release' is not an ancestor of your current HEAD."是真的,所以我执行git branch -D release来强制删除它。

但是我的存储库大小,在本地和GitHub上仍然很大。然后我按照常规的Git命令列表运行了git gc --prune=today --aggressive,但没有任何结果。

通过遵循Charles Bailey在SO 1029969中的说明,我可以获取最大blob的SHA-1哈希列表。然后我使用SO 460331中的脚本找到了blob ......而且最大的五个不存在,尽管找到了较小的blob,所以我知道该脚本正在工作。

我认为这些博客是发布分支的二进制文件,并且它们在删除该分支后被留下。正确的方法是如何摆脱它们?


你使用的 Git 版本是什么?你尝试过 https://dev59.com/y3NA5IYBdhLWcg3wEZaT#1108084 吗? - VonC
git版本1.6.2.3我尝试过使用不同的参数运行gc和prune。我还没有尝试过repack -a -d -l,只是运行了它,但没有变化。 - kkrugler
2
新信息 - 从GitHub进行全新克隆后,不再具有未引用的blob,并且大小已减少至“仅”84MB,原先为250MB。 - kkrugler
11个回答

0

尝试使用这个gist的方法:

git gc --prune="0 days"

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