【问题标题】:Finding large files in the history of a git repository fails在 git 存储库的历史记录中查找大文件失败
【发布时间】:2016-10-18 14:22:15
【问题描述】:

我的存储库非常大,因为历史上有一些大文件。为了找到大文件并删除它们,我正在执行:

$ 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

有什么想法吗?

【问题讨论】:

    标签: git git-log git-rev-list git-verify-pack


    【解决方案1】:

    也许大对象的路径位于不同的分支。在filter-branch 命令中使用--all 从所有分支中删除大文件。

    【讨论】:

    • 谢谢,长篇大论的简单回答。 :) 我的错误是没有在“git filter-branch”的末尾使用--all。更正你的答案,以便我接受。
    • 很高兴它有帮助。实际上我发布的filter-branch 命令已经包含了--all 参数。
    猜你喜欢
    • 2019-03-17
    • 2011-10-16
    • 2023-03-19
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    相关资源
    最近更新 更多