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

克隆仓库后如何恢复至历史提交?实操遇阻求解决方案

解决方法

方法一:直接重置main分支到目标提交(最简单直接)

这种方法会让你的main分支完全回到目标提交的状态,适合自己的fork仓库(不用担心影响他人):

  • 克隆自己的fork仓库到本地:
    git clone <你的fork仓库地址>
    cd <仓库文件夹名>
  • 确认目标提交92f5c04存在(执行后能看到这个哈希的提交记录就没问题):
    git log --oneline
  • 切换到main分支并硬重置到目标提交:
    git checkout main
    git reset --hard 92f5c04
  • 强制推送到远程仓库(因为修改了分支历史,必须用强制推送):
    git push --force origin main

完成后,你的本地和远程main分支都会恢复到目标提交的完整状态,后续正常编辑、提交即可。

方法二:不修改历史,恢复文件到当前main分支

如果不想改动main分支的历史记录,用这种方法把目标提交的文件恢复到当前分支:

  • 克隆仓库后切换到main分支:
    git checkout main
  • 从目标提交中恢复所有文件到当前工作区:
    git checkout 92f5c04 -- .
  • 提交恢复操作:
    git add .
    git commit -m "恢复历史提交92f5c04的所有文件"
  • 推送到远程仓库:
    git push origin main

为什么你之前的merge没效果?

你创建的tmpBranch是基于目标提交的分支,而你的main分支在目标提交之后做了“删除所有文件只剩readme”的操作。Git合并时会认为main分支的删除操作是后续的修改,优先级更高,所以不会自动恢复那些被删除的文件,导致merge后仓库还是只有readme.md。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:35:01