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

误操作重置Git main分支,如何恢复含70次提交的原分支?

恢复被强制覆盖的Git main分支

核心逻辑

你执行的git checkout -b main会创建新的main分支(覆盖本地原有main的指向),再加上git push -f origin main强制覆盖了远程main分支的历史。要恢复原70次提交,核心是找到原main分支最后一次提交的SHA值,再重置分支并推送到远程。

操作步骤

  1. 查找原提交的SHA值
    用以下命令遍历所有Git曾记录过的提交(包括孤儿提交、远程引用历史):

    git log --all --oneline --reflog
    

    从输出里定位原main分支的最后一次提交(即70次提交的末尾),记下对应的SHA值。
    如果本地找不到,检查其他克隆过该仓库的本地副本,从副本的main分支执行git log获取SHA;或者在Git托管平台(如GitHub/GitLab)的分支页面查看main分支的推送历史,找到被覆盖前的版本SHA。

  2. 重置本地main分支
    切换到main分支并重置到原提交:

    git checkout main
    git reset --hard <原提交的SHA值>
    
  3. 强制推送到远程恢复分支
    将重置后的本地main强制推送到远程,覆盖当前错误分支:

    git push -f origin main
    

注意事项

  • 后续操作主分支前,必须先执行git pull拉取远程最新代码,避免冲突或误覆盖。
  • 非必要情况禁止使用git push -f,尤其是共享主分支。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 04:52:11