克隆仓库后如何恢复至历史提交?实操遇阻求解决方案
解决方法
方法一:直接重置main分支到目标提交(最简单直接)
这种方法会让你的main分支完全回到目标提交的状态,适合自己的fork仓库(不用担心影响他人):
- 克隆自己的fork仓库到本地:
git clone <你的fork仓库地址>cd <仓库文件夹名> - 确认目标提交
92f5c04存在(执行后能看到这个哈希的提交记录就没问题):git log --oneline - 切换到main分支并硬重置到目标提交:
git checkout maingit 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
相关产品推荐
相关产品推荐

