误操作重置Git main分支,如何恢复含70次提交的原分支?
恢复被强制覆盖的Git main分支
核心逻辑
你执行的git checkout -b main会创建新的main分支(覆盖本地原有main的指向),再加上git push -f origin main强制覆盖了远程main分支的历史。要恢复原70次提交,核心是找到原main分支最后一次提交的SHA值,再重置分支并推送到远程。
操作步骤
查找原提交的SHA值
用以下命令遍历所有Git曾记录过的提交(包括孤儿提交、远程引用历史):git log --all --oneline --reflog从输出里定位原main分支的最后一次提交(即70次提交的末尾),记下对应的SHA值。
如果本地找不到,检查其他克隆过该仓库的本地副本,从副本的main分支执行git log获取SHA;或者在Git托管平台(如GitHub/GitLab)的分支页面查看main分支的推送历史,找到被覆盖前的版本SHA。重置本地main分支
切换到main分支并重置到原提交:git checkout main git reset --hard <原提交的SHA值>强制推送到远程恢复分支
将重置后的本地main强制推送到远程,覆盖当前错误分支:git push -f origin main
注意事项
- 后续操作主分支前,必须先执行
git pull拉取远程最新代码,避免冲突或误覆盖。 - 非必要情况禁止使用
git push -f,尤其是共享主分支。
内容的提问来源于stack exchange,提问作者Pranav Patil
相关产品推荐
相关产品推荐

