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

执行git reset --hard丢失文件,如何从哈希格式恢复?

恢复Git悬空树中的丢失文件

方法一:直接检出为新分支(最简便)

如果想一次性恢复所有文件到工作区,直接基于悬空树创建新分支即可:

git checkout -b recovered-branch d2682fde785bcfd92525e5b856770c084fd32ee8

执行后,Git会自动将该悬空树对应的所有文件检出到当前工作目录,你可以直接使用这些文件,之后也可以把这个分支的内容合并到主分支。

方法二:手动导出单个文件(适合选择性恢复)

如果你只需要恢复部分文件,或者想单独导出文件到指定目录:

  1. 先确认悬空树的完整文件列表:
git cat-file -p d2682fde785bcfd92525e5b856770c084fd32ee8

输出会类似:

100644 blob a1b2c3d4e5f6...  example.txt
100644 blob f7e6d5c4b3a2...  docs/manual.md
  1. 对每个需要恢复的文件,用以下命令导出:
git cat-file -p <文件哈希值> > <文件名>

比如恢复example.txt:

git cat-file -p a1b2c3d4e5f6... > example.txt

方法三:批量导出所有文件

如果文件数量多,用脚本批量处理更高效:
在bash终端中执行以下命令(确保当前在Git仓库目录下):

# 可选:创建临时目录存放恢复的文件
mkdir git-recovery && cd git-recovery

# 批量导出所有blob类型的文件,自动保留原目录结构
git cat-file -p d2682fde785bcfd92525e5b856770c084fd32ee8 | while read mode type hash name; do
  if [ "$type" = "blob" ]; then
    mkdir -p "$(dirname "$name")"
    git cat-file -p "$hash" > "$name"
  fi
done

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 17:45:03