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

GitHub如何撤销错误合并 将main分支恢复到历史正常版本

main分支错误合并回滚操作方案

你的场景不需要反向合并Testdeploy分支——提示分支落后19个提交,是因为合并Winestore后main分支已经新增了合并提交等19条记录,Testdeploy分支不包含这些提交,Git无法直接执行合并,直接回滚main分支到正常状态即可。
根据你的错误合并是否已经推送到远程仓库,选对应方案操作:

方案1:错误合并仅存在本地,未推送到远程

  • 切换到main分支:git checkout main
  • 执行命令查看提交列表,找到合并Winestore之前、合并完Testdeploy后的最后一个正常提交的hash值(即commit id,一串7位以上的字符):git log --oneline
  • 执行硬重置,将本地main指向该正常提交:git reset --hard <替换为你找到的正常commit hash>
    操作完本地main就恢复到了合并Winestore之前的正常运行状态,后续正常开发、推送即可。

方案2:错误合并已经推送到远程main分支

根据团队协作情况二选一:

子方案A:强制重置(适合团队无其他人基于错误版本的main开发)

  • 先按方案1的步骤把本地main硬重置到正常commit节点
  • 执行强制推送覆盖远程错误的main分支:git push origin main --force

注意:强推会覆盖远程分支的提交历史,操作前必须确认没有其他同事在错误版本的main上提交新代码,否则会丢失他人提交内容。

子方案B:反向撤销提交(适合已有同事拉取过错误版本main,不修改历史更安全)

  • 切换到main分支并拉取最新远程代码:git checkout main && git pull origin main
  • 执行git log --oneline找到合并Winestore的那条合并提交(提交信息一般为Merge branch 'Winestore' into main),复制它的commit hash
  • 执行revert命令反向撤销该合并提交,-m 1参数表示保留main分支原有的提交内容:git revert -m 1 <替换为Winestore合并提交的hash值>
  • 如果出现代码冲突,手动解决冲突后完成revert提交
  • 将生成的撤销提交正常推送到远程:git push origin main
    操作完成后远程main就会恢复到合并Winestore之前的正常运行状态,且不会修改原有提交历史,不会影响其他已经拉取过代码的同事。
    相关操作界面参考:
    分支状态截图1
    分支状态截图2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:57:23