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

使用git filter-repo后本地仓库及引用被删除,如何恢复?

执行git filter-repo后丢失本地开发进度的恢复方案
  • 先查看Git引用日志(reflog),它记录了本地所有HEAD和分支的变更轨迹,哪怕分支被删除也能找到操作痕迹:
    运行命令:git reflog
    在输出里找到执行git filter-repo之前的最后一次有效提交对应的哈希值(比如类似abcdefg HEAD@{3}: commit: 完成XX模块开发的记录),然后通过该哈希值恢复分支:
    git branch recover-progress abcdefg
    或者直接切换到该提交状态:git checkout abcdefg

  • 如果reflog里找不到目标提交,用Git对象检查工具找回孤立的提交对象:
    运行命令:git fsck --lost-found
    该命令会扫描Git对象库,将所有未被引用的提交、树对象放到.git/lost-found/commits目录下。你可以逐个查看这些提交的内容:
    git show <提交哈希值>
    找到包含丢失进度的提交后,同样用git branch命令基于它创建新分支。

  • 注意:Git默认会保留未引用对象至少14天(由gc.pruneExpire配置控制),只要你是近期执行的filter-repo操作,这些丢失的提交对象大概率还没被垃圾回收。即使超过14天也可以尝试上述方法,因为自动垃圾回收不一定会准时触发。

  • 恢复成功后,第一时间把恢复的分支推送到远程仓库,避免再次丢失:git push origin recover-progress

  • 后续执行git filter-repo这类破坏性操作前,务必先克隆一份本地仓库副本做测试,或者确保所有本地进度已推送到远程备份。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 16:52:12