本地main分支超前2个提交,切换origin/main报错,SourceTree如何修复?
在SourceTree中解决本地main分支超前远程且无法切换origin/main的问题
方案一:保存本地修改到新分支,重置本地main到远程版本
- 确认当前处于本地main分支(查看SourceTree顶部的分支选择器)
- 点击顶部菜单栏「分支」→「新建分支」,输入新分支名称(例如
feature/local-modifications),勾选「基于当前分支」,点击「创建分支」——这会把你那2个本地提交完整保留到新分支中 - 回到本地main分支,在左侧远程分支列表里右键点击
origin/main,选择「重置当前分支到这个提交」 - 在弹出的窗口中选择「硬重置(--hard)」,点击「确定」。此时本地main分支会完全同步到远程origin/main的状态,你的修改安全存在新分支里
方案二:Cherry-pick本地提交到新分支,保留原main分支状态
- 在左侧分支列表右键点击
origin/main,选择「检出」,遇到“分支已存在”提示时,选择「强制检出到新分支」,命名为temp-remote-main - 切换到
temp-remote-main分支,新建一个正式工作分支(例如work/local-updates) - 切回本地main分支,在提交历史里勾选那2个超前的提交,右键选择「Cherry pick提交」,目标分支选择刚才创建的
work/local-updates,点击「确定」 - 完成后,可删除原本地main分支,将
temp-remote-main重命名为main;或直接右键origin/main选择「重置当前分支到这个提交」来同步本地main
后续注意事项
- 后续开发建议先创建feature分支,避免直接修改本地main分支
- 可将新分支的提交推送到远程开发分支,通过PR申请合并到main分支
内容的提问来源于stack exchange,提问作者CCCC
相关产品推荐
相关产品推荐

