我的情况:有两个遥控器,origin
和fork
(后者归我所有)。我检查了origin/devel
,更改了一些代码并提交了 5x 到我的本地分支test
。我将我的提交推送到fork/test
.
然后我开始了一个交互式变基,在我的本地test
分支上:
git rebase -i --onto origin/devel
Git 打开了一个编辑器,其中列出了我的 5 个提交,准备好选择、压缩或其他任何内容。
我不小心关闭了编辑器,而不是删除所有内容或 Ctrl+C 和git rebase --abort
git 控制台。因此,它开始了变基。
为了撤消它,我使用了git reflog
andgit 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/devel
git rebase -i that-commit
--onto