如何总结一个 git 樱桃选择



昨天我在主分支中挑选了两个提交,其中一个引起了合并冲突,我解决了它们,提交并将它们推送到源头。今天,当我收到以下错误时,我正在尝试从服务器中提取:

$ git pull
fatal: You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).
Please, commit your changes before you can merge.
$

Git 状态为:

$ git status
# On branch main
# Your branch is behind 'origin/main' by 2 commits, and can be fast-forwarded.
#
$

我尝试了以下方法无济于事:

$ git cherry-pick --continue
usage: git cherry-pick [options] <commit-ish>
$

关于我如何解决这个问题的任何想法?提前感谢!

下次尝试git cherry-pick --abort,否则您所做的应该或多或少有效。

通过以下方式解决: rm .git/CHERRY_PICK_HEAD 我意识到这很危险,因为这不能保证 git 中的内部一致性,但到目前为止对我来说没有任何问题......

自从我上次从 2014 年开始回答以来,现在(2018 年(的正确命令是 git cherry-pick --quit .
在 Git 2.19(2018 年第 3 季度(之前,"git cherry-pick --quit "未能删除CHERRY_PICK_HEAD,即使我们在它返回后不会进入樱桃挑选会话,这已得到纠正。

参见提交 3e7dd99 (2018 年 8 月 16 日(,作者:Nguyễn Thái Ngọc Duy ( pclouds (。
(由Junio C Hamano -- gitster -- 在提交39e415c中合并,2018年8月20日(

樱桃选择:修复 --退出不删除CHERRY_PICK_HEAD

--quit应该是--abort但没有恢复HEAD.
留下CHERRY_PICK_HEAD可能会使其他命令错误地认为cherry-pick仍在进行中(例如" git commit --amend "将拒绝工作(。也清洁它

对于--abort来说,删除CHERRY_PICK_HEAD的工作在"git reset"上,所以我们不需要做任何其他事情。但是,让我们在--abort测试中添加额外的检查来确认。

如果

git cherry-pick --continue不起作用,这意味着 git 太旧了:该选项是在提交 5a5d80f 中为 git 1.7.8(2011 年 12 月(引入

它的工作原理是从.git/sequencer/todo中删除第一条指令并执行其中列出的其余的樱桃选择,以及".git/sequencer/opts"中列出的初始命令中的选项(想想"-s"和"-X"(。

这些天(2014年(,这将是您看到" You have not concluded your cherry-pick "时使用的命令。

另一种选择:使用 Git 2.23(2019 年第 3 季度(,git cherry-pick --continue实际上可以工作!

当重置或提交多步骤挑选或还原中的一个步骤时,命令行提示符脚本无法注意到当前状态,这已得到改进。

请参阅提交 e981bf7 (01 Jul 2019( by Phillip Wood ( phillipwood (.
(由Junio C Hamano -- gitster -- 在提交 8a4acc5 中合并,2019 年 7 月 19 日(

git-prompt : 提高cherry-pick/revert检测

如果用户在一系列挑剔或还原的过程中提交或重置冲突解决方案,则将删除CHERRY_PICK_HEAD/REVERT_HEAD,因此在没有这些文件的情况下,我们需要检查.git/sequencer/todo以查看是否有正在进行中挑选或还原。

查看cherry-pickrevert是否正在进行中,如果用户在一系列拾取或还原过程中与" git commit "提交了冲突解决方案,则CHERRY_PICK_HEAD/REVERT_HEAD将不存在,因此我们必须读取todo文件。

相关内容

  • 没有找到相关文章

最新更新