在git中撤消交互式rebase后恢复提交列表?

时间:2015-09-09 02:52:23

标签: git rebase undo git-interactive-rebase git-squash

我的情况:有两个遥控器originfork(后者归我所有)。我检查了origin/devel,更改了一些代码,并将5x提交到我的本地分支test。我将我的提交推送到fork/test

然后我在我的本地test分支上启动了交互式rebase:

git rebase -i --onto origin/devel

Git打开了一个编辑器,其中列出了我的5个提交,准备挑选,壁球或其他什么。

我不小心关闭了编辑器而没有删除所有内容,或者在git console中删除了Ctrl + C和git rebase --abort。因此,它开始了变革。

为了撤消它,我之后使用了git refloggit 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/develtest分歧后我自己的所有提交}。

//编辑:好像Git忘记了分叉点。 origin/devel确实在我自己的提交之前返回git merge-base --fork-point origin/devel提交,origin/devel给了我初始提交列表。那么git rebase -i that-commit为什么不再这样做呢?

0 个答案:

没有答案