当Git rebase --continue被空提交真正阻止时,如何继续

时间:2017-08-04 18:44:52

标签: git rebase branching-and-merging

我正在将几个提交的分支重新定位到上游分支。我被某种类型的失败所阻止,我无法继续执行我的分支中的剩余提交,所以当git reset似乎不起作用时我需要一种方法来继续。

正如我所说,我正在改变一个分支机构。我总是像这样进行变基,对于一两个提交有冲突解决空提交我并不感到惊讶。但是在我完成冲突解决步骤(编辑冲突的文件并添加生成的文件)之前,我不知道哪些提交。所以这是发生的事情的抽象版本:

$ git checkout working_branch
$ git rebase -i upstream
 [Here it is reported that file.c has conflicts. I edit it.
  The resulting diff is empty.]
$ git add file.c
$ git rebase --continue
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:

  git commit --allow-empty

Otherwise, please use 'git reset'
rebase in progress; onto xxxsha

然而,此时git reset没有任何帮助,我最终得到了相同的确切状态。我不希望有空提交。我之前已经从这个过程中发现了潜在的空提交,我一直很高兴让提交消失。

我遇到问题git cherry-pick not working,其中几乎完全相同的结果发生,但是从挑选一个提交,而不是重新分支。另一位询问者很高兴继续前进,不做樱桃挑选。逐步我认为rebase使用cherry-pick进行每次提交,我有几个提交要逐步完成。在我的情况下,这发生在我的分支的第一次提交,我需要一个真正的解决方案继续。

2 个答案:

答案 0 :(得分:5)

外卖是仔细查看摘要行。如果您注意到它所说的提交的摘要行无法应用,则答案结果为git rebase --continue,实际上是下一次提交。我被屏幕上的文字与命令经常显示的通常空提交消息的相似程度所抛弃。但这是一种不同的信息。它实际上已经继续,并正在进行下一次提交,它自动被解析为空。该文本包括分支的下一次提交的摘要行,而不是我刚刚解决的提交的摘要行。因此,当空提交状态以这种方式出现时,可以在没有进一步的情况下再次继续。

答案 1 :(得分:3)

在你完成解决冲突并发现你的空提交后,你可以跳过它:

$ git rebase --skip