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

执行git filter-repo后拉取远程,如何恢复本地历史与文件?

恢复丢失文件及撤销错误操作的方案

一、撤销git filter-repo操作,恢复原分支状态

git filter-repo默认会备份操作前的分支历史到refs/original/heads/main,执行以下命令即可回退到执行该命令前的本地状态:

git reset --hard refs/original/heads/main

执行后,所有被filter-repo修改或删除的文件将恢复。

二、找回被pull删除的未提交本地文件

针对未提交就被覆盖、删除的本地文件,可尝试:

  • 执行Git对象恢复命令:
git fsck --lost-found

该命令会将Git数据库中未被引用的对象(可能包含未提交的文件内容)导出到.git/lost-found/other目录。进入该目录查看文件内容,提取需要恢复的文件并重命名即可。

  • 利用VS Code Timeline恢复:对于Timeline可见的文件,直接从Timeline中选择对应版本恢复。

三、正确处理大文件推送失败问题

避免重复错误,推荐两种处理方式:

方式1:保留本地文件,仅移除Git跟踪

无需重写历史,适合多人协作场景:

git rm --cached <大文件路径>
git commit -m "Remove large file from Git tracking"
git push origin main

方式2:彻底移除历史中的大文件(重写历史)

若必须删除历史中的大文件,执行filter-repo后直接强制推送,不要执行pull:

git filter-repo --path <大文件路径> --invert-paths --force
git push origin main --force

⚠️ 注意:重写历史后强制推送会覆盖远程分支,需提前告知协作者同步本地分支。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:31:13