如何在Sourcetree中进行rebase操作、解决冲突并处理后续推送问题
Git变基(rebase)操作问题解答
问题1处理说明
解决完冲突并执行暂存操作后,不需要手动提交变更,直接选择「Actions -> Continue rebase」继续变基即可,你之前的操作逻辑是正确的。
rebase的本质是逐个重放当前分支需要移动的提交,每一步处理完冲突的变更会被自动整合到当前正在重放的提交中,额外手动提交会产生多余的无效提交节点。
问题2&后续操作说明
- 待拉取提示的原因:
rebase会重写本地work分支的提交历史,此时本地work分支的提交链和远端origin/work的旧提交链已经分叉,工具误将远端保存的旧提交判定为你本地缺失的更新,所以会出现1条待拉取的提示。 - 不要执行普通pull操作:
普通pull默认会执行合并操作,把远端的旧work分支提交合并到你本地重写后的新分支上,直接导致分支树混乱,这就是你遇到的问题。 - 推送操作要求:
你需要执行强制推送来覆盖远端的旧work分支提交:
- 如果是你个人独占使用的
work分支,可以直接执行强制推送,推送后远端origin/work的提交会和本地保持一致,待拉取提示也会同步消失。 - 如果是多人协作的
work分支,推送前需要先确认其他协作人员没有基于旧的origin/work提交新代码,避免覆盖其他人的更新。推荐使用命令git push --force-with-lease进行强制推送,该命令会先校验远端是否有你本地未同步的新提交,比普通强制推送安全性更高。
内容的提问来源于stack exchange,提问作者KurtJ
相关产品推荐
相关产品推荐

