忘记了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。
答
Klas的答案可能更有用,但总的来说,“超脱头部”意味着你所寻找的不是一个分支。
因此,你可以通过签出一个分支(具体来说,你希望你的分支)来解决这个问题。
如果这样的事情再次发生,我会建议看看你目前的状态gitk --all
,了解存储库结构和你在哪里。
答
这是一个难题,因为你现在搞砸了rebase
的内部。我会推荐以下步骤:
- 开始
gitk --all
查看您当前的结构。您应该特别能够看到您当前的HEAD和您之前的分支。看看HEAD上的提交,看看其中哪些是有用的。如果您认为以后仍然需要它,请在当前的HEAD上创建一个临时分支。也许承诺你现在的状态第一git commit -am "dirty"
- 运行
git rebase --abort
- 你搞砸了这个rebase。我认为rebase脚本不会让你离开那里。 - 您现在应该回到您的旧分支机构
- 使用
git rebase --onto
和git cherry-pick
取回所有要提交的提交。用git reset
,git commit --ammend
和git rebase
进一步修正。- 例如:如果你的分支包含提交
A--B--C
,你成功地重建基础A
和B
到A'
和B'
(检查gitk),你可以rebase --onto B' B
。
- 例如:如果你的分支包含提交
或者你可以做'git rebase --abort'并重新做一遍。 – yasouser 2013-05-02 21:20:58
@yasouser是的,这可能是最好的课程。但我相信这会放弃合并。 – 2013-05-02 21:24:36
是的,它会抛弃合并。我建议将它作为从以前的回购良好状态中重新开始的另一种选择。 – yasouser 2013-05-02 21:26:26