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

误执行git push -f覆盖远程提交,如何恢复历史提交?

恢复被强制推送覆盖的GitHub仓库提交历史

方法一:通过GitHub网页端找旧提交恢复

  • 打开你的GitHub仓库页面,点顶部的「Commits」标签
  • 拉到页面最底部,点「Browse the full commit history」
  • 在这个页面里能找到被覆盖前的所有旧提交,找到你要恢复的那个分支最后一个正常提交,复制它的完整提交哈希值
  • 克隆一个新的本地仓库(或者直接下载当前仓库的ZIP包),进入仓库目录
  • 执行命令切换到旧提交:git checkout <复制的旧提交哈希值>
  • 创建新分支保存恢复的历史:git checkout -b restored-history
  • 把这个分支推送到远程:git push origin restored-history
  • 之后可以把这个恢复分支合并回master,或者直接用它替换master(确认无误后执行git push -f origin restored-history:master)

方法二:用GitHub的仓库快照恢复

  • 打开仓库的「Settings」页面
  • 拉到最底部的「Danger Zone」区域,点击「Restore repository」(GitHub会保留最近的仓库快照)
  • 按照提示选择要恢复的时间点,完成操作即可

方法三:通过Git远程reflog恢复

  • 本地克隆新的仓库副本:git clone https://github.com/你的用户名/你的仓库名.git
  • 进入仓库目录后,执行命令查看远程分支的操作记录:git reflog show origin/master
  • 从列表里找到被强制推送前的提交哈希值,执行git checkout <旧提交哈希值>
  • 后续步骤和方法一一致,创建新分支并推送到远程

注意:GitHub的提交记录快照和reflog一般会保留90天左右,超过这个时间可能无法恢复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:25:26