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

执行git filter-repo后本地文件丢失,如何恢复未推送的重要文件?

恢复本地未推送文件的方法

1. 查看Git引用日志(reflog)

Git会记录所有分支和HEAD的变更轨迹,哪怕是被重写的提交也能在这里找到。执行以下命令:

git reflog

你会看到类似这样的条目:

abc1234 HEAD@{0}: filter-repo: rewrite
def5678 HEAD@{1}: commit: add important local changes

找到执行filter-repo操作前的那个提交哈希(比如示例里的def5678),切换到该提交:

git checkout def5678

此时你就能看到未推送的文件,立刻将这些文件复制到仓库外的安全位置。

2. 重置分支到操作前状态

如果要把当前分支恢复到filter-repo执行前的状态,找到操作前的提交哈希后,执行:

git reset --hard def5678

注意:这个操作会覆盖当前分支的所有现有变更,务必先备份好重要文件再执行。

3. 检查filter-repo的自动备份

git filter-repo默认会在.git/refs/original/目录下备份原有分支引用,你可以先查看该目录:

ls .git/refs/original/

如果存在备份,直接将分支指向备份的引用即可恢复,比如恢复main分支:

git update-ref refs/heads/main .git/refs/original/refs/heads/main

执行git log确认历史恢复后,检查本地文件是否完整。

4. 找回未追踪的文件

如果未推送的文件是从未被Git追踪的(没执行过git add),Git不会记录它们的变动,这时候需要依赖系统级的文件恢复工具:

  • Windows:优先查看回收站,或使用Recuva这类第三方工具
  • macOS:通过Time Machine备份恢复,或使用Disk Drill
  • Linux:使用testdisk、extundelete这类数据恢复工具

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:26:59