忘记了“ git rebase ——继续”,忘记了“ git 提交”。如何修复?

我在 git 中重新定义了代码的基础,我得到了一些合并冲突,我解决了这些冲突并做了以下工作:

git add

这时我忘了做:

git rebase --continue

我继续编程,然后做了:

git commit

现在我在 "no branch"上,不能做:

git rebase --continue

我该怎么补救?

61332 次浏览

编辑 : 也看看下面的答案,看看这是不是一个更简单的解决方案。 < a href = “ https://stackoverflow./a/12163247/493106”> https://stackoverflow.com/a/12163247/493106


我得试试,但我想我会这么做:

  1. 标记最近的提交(或者只是写下它的 SHA1,这样你就不会丢失它) : git tag temp
  2. git rebase --abort
  3. 再做一次重建。你必须再次解决合并问题
  4. git rebase --continue
  5. git cherry-pick temp

这样做的问题是,您的 temp提交可能既包含合并的解析,也包含新代码。所以这可能有点棘手,但我会尝试一下,看看是否有效。

只要做 git reset --soft HEAD^。它将 HEAD 指针移动到其父节点,但保留工作树并将合并更改添加到索引中。因此,您可以像以前一样继续使用 git rebase --continue重定基。

我遇到了同样的问题,更糟糕的是,我重新定义了三次提交的基础,在解决了第二次提交的冲突之后,我把“ rebase —— keep”改成了“ commit”。

结果我得到了这个 Git reflog

当我应用 kirikaza 的解决方案时,我只恢复了第三个提交,而不是第二个提交,这是有问题的。

正如您所看到的,rebase 从 Remotes/source/master 分支的签出开始,然后应用作为前三个操作(在签出之前)出现在 reflog 中的三次提交。

然后,如果您想从一个干净的基础上重新启动,在重新基础之前,您可以简单地重置到哈希之前签出的重新基础操作。以我为例(见图) :

git reset --hard 859ed3c

然后你可以开始一个新的 git rebase

我有 git rebased,固定冲突,git 添加文件与冲突,和(错误地)提交。

我尝试了给出的 git reset --soft HEAD^git reset --hard解决方案,但都不适合我。

然而,只有 git rebase --abort起作用了: 它把我带回到使用一个干净的工作树的基础开始之前。