Git rebase -i操作意外回退本地分支至提交A、B之前,原因咨询
Git Rebase 回退异常的原因与修复方法
为什么会回退到更早状态?
你执行git rebase -i HEAD~3时犯了范围指定错误:HEAD~N代表从当前提交向前追溯N个提交的父节点作为rebase的起点,你只有commit A和commit B两个新提交,HEAD~3会把rebase范围拉到commit A之前的提交上。当你在交互式界面处理完A和B后,rebase会将修改后的提交放到这个更早的基点上,最终导致分支回退到A、B创建前的状态。
正确的合并操作步骤
- 你已经通过
git rebase --abort恢复到正常状态,无需额外操作 - 执行正确的交互式rebase命令,仅包含A、B两个目标提交:
git rebase -i HEAD~2 - 在弹出的编辑窗口中,将
commit B对应行的pick修改为squash(或缩写s) - 保存退出后,进入提交信息编辑界面,整理合并后的提交信息,再次保存退出即可完成A、B的合并
额外提醒
- 不确定提交数量时,用
git log --oneline查看提交历史,数清需要处理的提交数后再确定HEAD~N中的N值 - 若此前已将
commit A推送到远程仓库,合并后需用git push --force-with-lease(比--force更安全)更新远程分支,因为rebase修改了提交历史
内容的提问来源于stack exchange,提问作者Kevin2566
相关产品推荐
相关产品推荐

