Git 我如何跳过一个补丁时,樱桃采摘多个?
我已使用如下命令开始采摘樱桃:Git 我如何跳过一个补丁时,樱桃采摘多个?,git,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
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-ib将其删除。有更好的方法吗?您可以使用git cherry pick--quit退出正在进行的cherry pick。之后,A和B应该仍然在您的分支中,您继续使用git 2.23(2019年第三季度)执行git cherry pick D,“
git cherry pick/revert
”学习了一个新的“--skip
”操作
因此,在您的情况下:git cherry pick——跳过C
上的
参见,,(2019年7月2日)作者。
(于2019年7月19日合并)
樱桃拾取/还原:添加--跳过选项
git am
或rebase
有一个--skip
标志,如果
用户希望这样做
在git-reset
或revert
期间,用户同样可以跳过提交,但需要使用“git-reset
”(或在冲突的情况下“git-reset--merge
”),然后是“gi
t(cherry-pick
)--continue
”跳过提交。
这对于用户来说更烦人,有时甚至令人困惑
添加一个--skip
选项,使用户可以更轻松地跳过提交,并使命令更加一致
更新建议消息,以较少地告诉用户这一点
跳过提交的繁琐方式
因此,与其看到:
你会看到:
在重写C中的“git-rebase
”时,防止“git-commit
”在中断的cherry-pick期间进行空提交或修改的机制被破坏,该机制已使用git 2.27(2020年第2季度)进行了更正
参见(2019年12月6日)作者。
参见,,,,(2019年12月6日)作者。
(于2020年3月25日合并)
:在重基期间为空提交提供正确建议
原始补丁作者:Johannes Schindelin
签字人:菲利普·伍德
在(“Git cherry pick/revert
:advision using--skip”,2019-07-02,Git v2.23.0-rc0--中列出),Git commit
学会了在尝试cherry pick空补丁时建议运行Git cherry pick--skip
但是,在打印此建议时(最初建议中性的git重置
),忽略了不仅仅是一个git cherry pick
),还有更多的条件:在重新基址期间也可能发生同样的情况
让我们建议正确的命令,即使是在重基期间
同时,我们调整了更多的位置,错误地假设存在CHERRY\u PICK\u HEAD
意味着这肯定是一个CHERRY PICK
正在进行中
注意:当用户在重基期间运行git cherry pick
时,我们会尽力处理这种情况。
这是非常有效的(例如,在交互式重基中的exec
行中)。
另一方面,在cherry pick期间不可能运行rebase,这意味着:如果rebase merge/
和sequencer/
都存在,或者cherry pick\u HEAD
和rebase\u HEAD
指向相同的提交,我们仍然建议使用git cherry pick--skip
也许您可以重新设置一系列提交的基础,而不是整个分支的基础?A^..B?
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