首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试删除git中的大文件--无法删除rev-list引用

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

Stack Overflow用户
提问于 2013-06-27 07:53:08
回答 1查看 242关注 0票数 1

我正试图从我的git回购历史中完全删除一些非常大的文件。我已经尝试了几乎所有我见过的解决方案,但我永远不能使大型文件对象“不可访问”,这样就会被垃圾收集。下面是我尝试过的一篇文章:

代码语言:javascript
复制
    # 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列表中这个令人讨厌的引用之外,这就是不允许垃圾收集的地方。

如果这个对象出现在rev列表中,它真的永远不会被删除吗?如果是这样,我如何从rev列表中删除它的引用?我尝试过这么多命令,在这么多不同的排列中,都没有效果。任何洞察力都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2013-06-29 04:22:53

原来,我有一个旧标记仍然引用大型文件,并且不知道filter-branch不对标记进行操作。This answer把我引向了正确的方向。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17337627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档