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

如何从Git悬空Blob恢复误删的未暂存文件

恢复git clean -xdf删除的未暂存文件(基于悬空Blob)

当你通过git fsck拿到悬空Blob哈希后,按以下步骤恢复文件:

  • 第一步:识别目标Blob
    每个Blob对应一个文件内容,先通过哈希查看具体内容,确认是不是你要恢复的文件:

    git show <你的Blob哈希>
    

    比如你提供的哈希:

    git show 3x1xd7x4090xd9x350x490d8xd76743x670xd0c5
    

    如果文件内容较长,可导出到临时文件查看:

    git show <你的Blob哈希> > temp-review.txt
    
  • 第二步:恢复文件
    确认目标Blob后,有两种恢复方式:

    1. 直接导出到原路径
      直接将Blob内容写入原文件路径,就能恢复到工作区:

      git show <你的Blob哈希> > 原文件的完整路径/文件名.后缀
      

      比如原文件是src/utils/helper.js,就执行:

      git show 3x1xd7x4090xd9x350x490d8xd76743x670xd0c5 > src/utils/helper.js
      
    2. 通过暂存区恢复(适合后续要提交的场景)
      先将Blob添加到暂存区,再检出到工作区:

      # 100644对应普通文件权限,可执行文件用100755
      git update-index --add --cacheinfo 100644 <你的Blob哈希> 原文件的完整路径/文件名.后缀
      # 将暂存区的文件检出到工作区
      git checkout -- 原文件的完整路径/文件名.后缀
      
  • 批量定位Blob(可选)
    如果悬空Blob数量多,一个个查看效率低,用以下命令批量输出所有悬空Blob的内容:

    git fsck --full --unreachable --no-reflog | grep blob | awk '{print $3}' | while read hash; do echo "=== Blob哈希: $hash ==="; git show $hash; echo -e "\n---分割线---\n"; done
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:52:10