我已经开始使用如下命令来挑选樱桃:
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
将其删除。有更好的方法吗?
答案 0 :(得分:1)
在Git 2.23(2019年第三季度)中,“ git cherry-pick/revert
”学会了新的“ --skip
”操作。
因此,您的情况是:在git cherry-pick --skip
上的 C
。
请参见commit dcb500d的commit de81ca3,commit 265ab48,commit 918d1e6,commit 6a1f904,Rohit Ashiwal (r1walz
)(2019年7月2日)。
(由Junio C Hamano -- gitster
--在commit d97c62c中合并,2019年7月19日)
樱桃选择/还原:添加--skip选项
git am
或rebase
有一个--skip
标志,如果 用户希望这样做。在
cherry-pick
或revert
期间,用户也可以跳过提交,但是需要使用'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
。