挑选多个樱桃时,如何跳过补丁?

时间:2018-10-30 21:13:06

标签: git

我已经开始使用如下命令来挑选樱桃:

git cherry-pick A B C D

让我们说补丁A和B有一些合并冲突,但我最终将它们全部修复,git cherry-pick --continue。当我最终使用C时,我意识到必须已经应用了相同的代码,而补丁是空的。

我可以选择git cherry-pick --allow-empty,但这会在我的历史记录中留下我不想要的空提交。理想情况下,我只想跳过此补丁(C)。但是,没有git cherry-pick --skip。我可以git cherry-pick --abort,但那样会使我失去与A和B的所有工作。

作为一种解决方法,我可以接受空的容器,记住它是哪个容器,然后在完成摘樱桃后用git rebase -i B将其删除。有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

在Git 2.23(2019年第三季度)中,“ git cherry-pick/revert”学会了新的“ --skip”操作。

因此,您的情况是:在git cherry-pick --skip上的 C

请参见commit dcb500dcommit de81ca3commit 265ab48commit 918d1e6commit 6a1f904Rohit Ashiwal (r1walz)(2019年7月2日)。
(由Junio C Hamano -- gitster --commit d97c62c中合并,2019年7月19日)

  

樱桃选择/还原:添加--skip选项

     

git amrebase有一个--skip标志,如果   用户希望这样做。

     

cherry-pickrevert期间,用户也可以跳过提交,但是需要使用'git reset'(或者在发生冲突'git reset --merge'的情况下) ,后跟'gi t(cherry-pick | revert--continue',以跳过提交。
  这更烦人,有时会使用户感到困惑。

     

添加一个--skip选项,使用户更容易跳过提交,并使命令更加一致。

     

更新建议消息,以减少对用户的了解   跳过提交的繁琐方式。

所以没有看到:

Otherwise, please use 'git reset

   If you wish to skip this commit, use:

   git reset

您将看到:

 Otherwise, please use 'git cherry-pick --skip

 and then use:

   git cherry-pick --continue 

答案 1 :(得分:0)

您可以使用git cherry-pick --quit退出进行中的选择。之后,A和B应该仍然在您的分支中,然后继续git cherry-pick D