You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找最近一次git fetch获取的大对象?

定位Git Fetch新增的大文件所属分支

一、精准定位本次Fetch新增的大对象

如果你能通过Git日志找到本次fetch前远程分支的状态,可直接对比出新增的提交与关联对象:

  1. 查看远程分支的更新记录,找到上次fetch对应的分支头哈希:

    git reflog show origin/HEAD
    

    比如输出中类似abc123 HEAD@{5}: fetch origin: fast-forward的行,abc123就是上次fetch完成后的远程分支头哈希。

  2. 列出本次fetch新增的所有提交及关联对象:

    git rev-list abc123..origin --objects
    
  3. 筛选出大小超过阈值(示例为10MB)的对象:

    git rev-list abc123..origin --objects | awk '{print $1}' | xargs git cat-file -s | awk '$2 > 10*1024*1024'
    
  4. 查找大对象所属的提交和分支:

    git log --all --find-object=<大对象哈希> --oneline
    

    输出会显示包含该对象的所有提交,以及对应的分支标签。

二、按时间范围近似排查

如果找不到旧哈希,可通过时间范围筛选最近X天远程分支新增的提交:

  1. 列出最近3天远程分支新增的提交及对象:

    git rev-list --since="3 days ago" origin --objects
    
  2. 重复上述筛选大对象、定位分支的步骤即可。

三、针对「提交大文件后又删除」的场景

这种情况大对象仍存在于Git历史中,除通用方法外,还可直接追踪删除记录:

  1. 找出所有包含文件删除操作的提交:

    git log --all --diff-filter=D --summary
    
  2. 针对疑似的删除提交,查看被删文件的大小:

    git show <提交哈希>:<被删除文件路径> | wc -c
    

    或直接查看提交的diff详情确认:

    git show <提交哈希>
    
  3. 找到对应提交后,查看该提交所属的所有分支:

    git branch --contains <提交哈希>
    

内容的提问来源于stack exchange,提问作者TTT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 05:52:37