git rebase未按预期工作,将upstream/master变基到8分支时出现异常
Git变基操作疑问解答
提示「8 on 41b65bf」的原因
git rebase <上游分支> 的执行逻辑本身就是:
- 定位当前8分支和upstream/master的共同祖先提交
- 暂存8分支从共同祖先之后的所有独有提交
- 把HEAD切换到upstream/master的最新提交(也就是你看到的41b65bf)
- 逐个将之前暂存的8分支提交按顺序应用到该提交之上
你看到的「将8变基到41b65bf」是Git对变基操作的正常描述,不存在操作反向的问题,最终执行完成后8分支就会包含upstream/master的所有更新,且8分支的独有提交会全部排在upstream/master提交之后,完全符合你的操作预期。
origin/8.06和本次变基的关联
本地8分支是基于origin/8.06分支检出创建的,因此Git识别到的8分支独有提交的起点就是origin/8.06的最后一次「init」提交,变基过程中会把该提交作为第一个待移植的提交处理,弹出Vim编辑界面是该提交没有冲突,Git询问你是否需要修改提交信息,属于正常流程,和本次变基操作没有冲突。
后续操作步骤
- 如果确认要继续完成变基:在弹出的Vim界面直接输入
:wq保存默认提交信息即可,后续如果没有新的冲突,变基会自动完成,HEAD会自动切回本地8分支 - 变基完成后可执行
git log --oneline --graph验证分支状态,确认upstream/master的提交全部在8分支的提交之前 - 若需要将更新后的8分支推送到远程仓库,因为变基修改了提交历史,需要执行
git push origin 8 -f强制推送(若有多人共同开发该分支,推送前需和协作者同步避免冲突) - 如果想放弃本次变基,恢复到操作前的分支状态,执行
git rebase --abort即可
内容的提问来源于stack exchange,提问作者J0hannes
相关产品推荐
相关产品推荐

