当不进行樱桃采摘时,之前的樱桃采摘现在为空

Jam*_*mie 2 git rebase cherry-pick

我正在尝试使用 删除提交列表git rebase -i HEAD~19。我过去曾成功地使用过此方法,但是当我尝试运行然后退出vim而不进行任何更改(:q!)时,我收到此错误:

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 cherry-pick --skip'
interactive rebase in progress; onto dd0b851
Run Code Online (Sandbox Code Playgroud)

我不是在挑选,也不知道为什么我会遇到要跳过的错误。

TTT*_*TTT 5

发生这种情况是因为您没有做您认为正在做的事情:

但是当我尝试运行然后退出vim而不进行任何更改时(:q!)...

当您退出而不修改该文件时,您实际上仍在进行变基。如果要退出而不进行变基,则应删除文件中的所有行(或至少删除包含提交的每一行),然后保存并退出。这将显示错误并中止变基。

退出通常有效且似乎什么也不做的原因是,当您的历史记录是线性时,默认情况下,如果提交没有任何更改,Git 不会重写提交,因此它会保留原始提交 ID 并继续前进。这就是为什么您仍然看到“rebasing 1/X...”,因为它会迭代所有提交,但实际上并没有重写它们。

如果您的历史记录不是线性的(意味着您有一些合并提交包含在变基中),则合并提交不会包含在待办事项列表中。因此,这次变基实际上将重写至少一些提交,因为您在此重写中缺少合并提交,因此图表并不相同。在变基期间,如果遇到没有更改的提交,您将收到您看到的消息。它停在这里是因为这被认为是不寻常的,它让您有机会决定要做什么。它提到的原因cherry-pick是因为在幕后,在变基期间重写提交本质上是为您挑选每个提交。

旁注:在这种情况下,最有可能出现空提交的原因是合并提交的两侧都有类似的提交(rebase 待办事项列表中缺少该提交)。