1

我的情况:有两个遥控器,originfork(后者归我所有)。我检查了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 resetgit checkout没有正确撤消它)。

最终目标是在以后的某个时间将我的test分支重新定位到最新origin/devel的,压缩我自己的所有提交,因为testorigin/devel.

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

4

0 回答 0