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