如何将GitHub的main分支回退重置为develop分支的状态?
将main分支重置为与develop完全一致的操作方法
你当前的GitKraken界面状态如下:
前置说明
- 以下操作会彻底丢弃main分支上所有与develop分支不一致的提交、未提交的工作区改动,如果main分支上有需要留存的内容,请提前备份
- 之前执行reset/rebase未生效的常见原因:重置后没有强制推送覆盖远端main分支,导致本地修改后拉取又回到旧状态;重置时选择了mixed/soft模式,没有彻底覆盖提交历史和工作区;未提前拉取最新远端状态,对齐的是本地旧版本的develop分支
方法1:命令行操作(全场景通用100%生效)
依次执行以下命令即可:
- 切换到本地main分支
git checkout main - 拉取所有远端分支的最新状态,清除本地旧缓存
git fetch --all -p - 将本地main分支硬重置到develop分支最新提交:如果需要对齐本地develop分支,将命令里的
origin/develop替换为develop即可git reset --hard origin/develop - 强制推送重置后的本地main分支到远端,覆盖远端旧的main分支历史
git push origin main --force
如果仓库开启了main分支保护禁止强推,需要先在仓库设置页面临时解除main分支的强制推送限制,操作完成后再重新开启保护规则即可
方法2:GitKraken可视化界面操作
不想敲命令可以直接在GitKraken内按步骤操作:
- 点击左侧分支栏的
main分支,切换到main分支 - 在左侧分支栏找到目标develop分支:要对齐本地develop就选本地列表里的
develop,要对齐远端最新develop就展开origin分组选远端的develop - 右键点击选中的develop分支,在弹出菜单里选择
Reset main to this commit,二级菜单选择Hard - discard all changes,确认执行 - 等待本地重置完成后,点击顶部工具栏的
Push按钮,在弹出的推送确认框里勾选Force Push选项,确认推送即可
操作完成后拉取一次main分支验证,此时本地和远端的main分支会和develop分支的提交历史、文件内容完全一致。
内容的提问来源于stack exchange,提问作者kimahry10
相关产品推荐
相关产品推荐

