试图删除git中的大文件 - 无法删除rev-list引用

时间:2013-06-27 07:53:08

标签: git

我正在尝试从我的git repo历史记录中完全删除一些非常大的文件。我已经尝试了几乎我见过的所有解决方案,但是我永远不能让大文件对象“无法访问”,因此它们将被垃圾收集。以下是我尝试过的内容的简要说明:

    # finding the largest file
$ git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -n | tail -1
3d975c0908cde6010cbfcd0424eaf74c9dcf9f13 blob   1314240900 19175430 50462430

    # which file?
$ git rev-list --objects --all | grep  3d975c09
3d975c0908cde6010cbfcd0424eaf74c9dcf9f13 rawdata/brownfields/GEODATA_Featureclass_MAR2013.dbf

$ git filter-branch -f --tree-filter 'git rm -fr --cached --ignore-unmatch rawdata'
$ git reflog expire --expire=now --verbose --all
$ git gc --aggressive --prune=now
$ git prune --expire now

$ git rev-list --objects --all | grep  3d975c09
3d975c0908cde6010cbfcd0424eaf74c9dcf9f13 rawdata/brownfields/GEODATA_Featureclass_MAR2013.dbf

我非常有信心这个文件已经从历史中删除了除了之外的rev-list中的这个讨厌的引用,这是不允许它被垃圾收集的。

如果它出现在转录列表中,它永远不会被删除吗?如果是这样,我如何从rev-list中删除它的引用?我已经尝试过如此多的命令,在许多不同的排列中,无济于事。任何见解都会非常感激。

1 个答案:

答案 0 :(得分:0)

事实证明我有一个旧标签仍然引用大文件,并且不知道filter-branch不能对标签进行操作。 This answer让我朝着正确的方向前进。

简而言之,我需要将--tag-name-filter [tag]选项添加到filter-branch