使用Git推送/拉取时本地目录文件丢失,寻求恢复方法
找回丢失文件的实操方案
1. 优先从本地初始提交恢复
你的git reflog里记录了本地初始提交e2b07b9,这应该包含你克隆远程仓库前的本地文件,直接执行以下命令导出所有该提交下的文件:
git checkout e2b07b9 -- .
如果只想恢复特定文件,把.替换为具体的文件路径即可:
git checkout e2b07b9 -- docs/report.pdf src/utils.py
2. 切换到合并操作前的状态
查看reflog中的HEAD@{7}节点,这是你执行合并和reset操作前的状态,切换到该节点检查文件:
git checkout HEAD@{7}
如果此时能看到丢失的文件,立刻将这些文件复制到仓库外的安全目录备份,再切回主分支。
3. 深度扫描Git悬空对象
重新执行git fsck --lost-found后,Git会把未被引用的对象存到.git/lost-found/目录。用以下命令遍历所有悬空文件内容,匹配你丢失的文件:
for blob in $(find .git/lost-found/blobs -type f); do echo "--- 查看Blob: $blob ---" git cat-file -p $blob done
找到匹配内容后,用下面的命令导出到指定文件:
git cat-file -p <找到的blob-id> > 恢复的文件名.txt
4. 从远程仓库拉取备份
你之前通过Github网页上传过脚本,检查远程仓库的提交历史,直接拉取对应版本的文件:
git fetch origin git checkout origin/main -- path/to/需要恢复的文件
内容的提问来源于stack exchange,提问作者Koen ter Heegde
相关产品推荐
相关产品推荐

