我的情况:有两个遥控器,origin和fork(后者归我所有)。我检查了origin/devel,更改了一些代码并提交了 5x 到我的本地分支test。我将我的提交推送到fork/test.
然后我开始了一个交互式变基,在我的本地test分支上:
git rebase -i --onto origin/devel
Git 打开了一个编辑器,其中列出了我的 5 个提交,准备好选择、压缩或其他任何内容。
我不小心关闭了编辑器,而不是删除所有内容或 Ctrl+C 和git rebase --abortgit 控制台。因此,它开始了变基。
为了撤消它,我使用了git reflogandgit reset --hard HEAD@{...}以及git checkout fork/test -B test后来,因为我的遥控器也应该包含 pre-rebase 状态。他们似乎都恢复了状态,但如果我再次启动 rebase,列表中将没有提交(只有一个noop条目)。
如何恢复变基前的原始状态,以便再次显示原始提交列表?
撤消 git rebase不涉及此问题。我主要感兴趣的是为什么会发生这种情况以及如何真正恢复变基,而不是如何更改rebase命令以再次获取提交列表(正如我所说,从我的角度来看git reset并git checkout没有正确撤消它)。
最终目标是在以后的某个时间将我的test分支重新定位到最新origin/devel的,压缩我自己的所有提交,因为test从origin/devel.
//编辑:看起来 Git 忘记了分叉点。但是,在我自己的提交之前git merge-base --fork-point origin/devel确实返回了提交,并给了我初始提交列表。那么为什么不再这样做呢?origin/develgit rebase -i that-commit--onto