忘记了git rebase - 继续

问题描述:

我当时在我自己的本地功能部门,想将它合并为主。我查出了主人,做了git pull --rebase,发生了一次冲突,解决了它,但之后我忘了做git rebase --continue。然后我做了git merge my_other_branch然后想把它推到原点,但是git告诉我我不在任何分支,所以我就像是“哦不,我fogot rebase --continue”所以我做了它,然后git说“没有变化 - 你忘了使用git add?“。所以现在我不在任何分支......在某种独立的头部状态。忘记了git rebase - 继续

我需要做些什么才能重新走上正轨?

git rebase --skip 

应该继续rebase。

+3

或者你可以做'git rebase --abort'并重新做一遍。 – yasouser 2013-05-02 21:20:58

+0

@yasouser是的,这可能是最好的课程。但我相信这会放弃合并。 – 2013-05-02 21:24:36

+0

是的,它会抛弃合并。我建议将它作为从以前的回购良好状态中重新开始的另一种选择。 – yasouser 2013-05-02 21:26:26

Klas的答案可能更有用,但总的来说,“超脱头部”意味着你所寻找的不是一个分支。

因此,你可以通过签出一个分支(具体来说,你希望你的分支)来解决这个问题。

如果这样的事情再次发生,我会建议看看你目前的状态gitk --all,了解存储库结构和你在哪里。

这是一个难题,因为你现在搞砸了rebase的内部。我会推荐以下步骤:

  • 开始gitk --all查看您当前的结构。您应该特别能够看到您当前的HEAD和您之前的分支。看看HEAD上的提交,看看其中哪些是有用的。如果您认为以后仍然需要它,请在当前的HEAD上创建一个临时分支。也许承诺你现在的状态第一git commit -am "dirty"
  • 运行git rebase --abort - 你搞砸了这个rebase。我认为rebase脚本不会让你离开那里。
  • 您现在应该回到您的旧分支机构
  • 使用git rebase --ontogit cherry-pick取回所有要提交的提交。用git reset,git commit --ammendgit rebase进一步修正。
    • 例如:如果你的分支包含提交A--B--C,你成功地重建基础ABA'B'(检查gitk),你可以rebase --onto B' B