中止(意外的和旧的/悬而未决的)变基,但保留所有更改

Tim*_*ony 4 git git-rebase

我在本地的一个分支(master)工作。我之前做了一个变基来压缩一些我认为有效的提交。我继续进行多次提交,直到需要执行另一次变基。当我打电话时,git rebase -i HEAD~3我收到错误:

交互式变基已经开始

这表明我从未正确完成旧的 rebase。

现在我想中止旧的变基,而不丢失自开始以来的任何更改。我本来打算用

git rebase --abort
Run Code Online (Sandbox Code Playgroud)

但我很确定这将删除我所有的本地提交并在变基之前放回原处。我在这里能做什么?

Chr*_*her 5

提交它们。中止变基。从 中提取提交git reflog

git add .
git commit -m "Rebased changes"
git rebase --abort
git cherry-pick HEAD@{1}
Run Code Online (Sandbox Code Playgroud)

用它做你想做的事。如果你的git reflog分支过期了(我无法想象在正常的日常操作中会发生这种情况),请切断一个新分支,然后中止变基:

git add .
git commit -m "Rebase changes"
git checkout -b rebased-master
git rebase --abort
Run Code Online (Sandbox Code Playgroud)