我的存储库非常大,因为历史记录中有一些大文件。为了找到大文件并删除它们,我正在执行:
$ git verify-pack -v .git/objects/pack/pack-..e8a.idx | sort -k 3 -n | tail -3
结果如下:
12eb660ea206e1b7bd42cb8b525aabe9e86a5064 blob 56413247 15833578 5889838
89b377ace5639c0914bb49d28d0c8e97b0f19a16 blob 56414112 15833631 81736530
4ea83fb57b49f7afdbe99e4f043509d184338f5b blob 56426618 15837504 48628334
要查找最大文件的路径,请运行:
$ git rev-list --objects --all | grep 4ea83fb57b49f
结果是:
4ea83fb57b49f7afdbe99e4f043509d184338f5b path/to/my/large_file
但是,当我在这个文件上运行git log
时,如:
$ git log --oneline --branches -- path/to/my/large_file
没有显示日志。 此外,每当我尝试通过以下方式从历史记录中删除二进制文件时:
$ git filter-branch --index-filter \
'git rm --ignore-unmatch --cached path/to/my/large_file'
我收到:
WARNING: Ref 'refs/heads/master' is unchanged
有什么想法吗?
答案 0 :(得分:1)
大型对象的路径可能位于不同的分支中。在--all
命令中使用filter-branch
从所有分支中删除大文件。