git大包文件,删除并重写?

时间:2014-07-11 08:31:43

标签: git

我有一个相对较小的git存储库,其中是一个标准的wordpress安装。 但另外我意外地有一个"概念"存储库中的文件夹,里面有很多较大的psd文件。

现在的问题是,在50次提交之后,git创建了一个" pack"文件,为1,3 GB。太大了!

为了缩小包文件夹,我试图删除我的"概念"文件夹通过:

git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch DIRECTORY/' --prune-empty --tag-name-filter cat -- --all

之后

git gc --aggressive --prune

执行这些命令后,我的概念"文件夹已从文件系统和所有提交中删除。宾果!

但是包文件仍然是1,3 GB

我搜索了stackoverflow,但我找到的只是我上面使用的命令。 也许任何人都有任何关于如何缩小包文件夹的信息。我认为它的大小为1,3 GB来自于"概念"文件夹及其在55次提交期间的提交。

祝你好运, 安德烈亚斯

1 个答案:

答案 0 :(得分:6)

我之前提到过git gc alone can actually increase the size of the repo)

我列出的命令是:

# remove the temporary history git-filter-branch otherwise leaves behind for a long time
rm -rf .git/refs/original/ && git reflog expire --all &&  git gc --aggressive --prune=now

如果这不起作用,请查看BFG tool

你会在" How to remove unreferenced blobs from my git repo"

中找到更完整的gc

This article建议采用类似的方法:

rm -rf .git/refs/original/
git reflog expire --expire=now --all
git fsck --full --unreachable
git repack -A -d
git gc --aggressive --prune=now