昨天我挑选了两个提交到我的主分支,其中一个引起了合并冲突,我解决了它们,承诺并将它们推向原点。今天,当我收到以下错误时,我正试图从服务器拉出来:
$ 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>
$
关于如何解决这个问题的任何想法?提前谢谢!
答案 0 :(得分:97)
下次尝试git cherry-pick --abort
,否则你所做的应该或多或少有效。
答案 1 :(得分:10)
解决了以下问题:rm .git/CHERRY_PICK_HEAD
我意识到这很危险,因为这并不能保证git内部的一致性,但到目前为止我没有问题...
答案 2 :(得分:7)
如果git cherry-pick --continue
不起作用,那就意味着git太旧了:在commit 5a5d80f
它的工作原理是从.git / sequencer / todo中删除第一条指令并执行其中列出的其余樱桃选择,并从最初的选项(认为“
-s
”和“-X
”) “.git/sequencer/opts
”中列出的命令。
这些天(2014年),这将是您在看到“You have not concluded your cherry-pick
”时使用的命令。
答案 3 :(得分:1)
自从我的previous answer from 2014起,如今(2018年)正确的命令是git cherry-pick --quit
。
在Git 2.19(2018年第三季度)之前,“ git cherry-pick --quit
”未能删除CHERRY_PICK_HEAD
,即使我们在返回后不再处于选择状态也是如此。
请参见commit 3e7dd99的Nguyễn Thái Ngọc Duy (pclouds
)(2018年8月16日)。
(由Junio C Hamano -- gitster
--在commit 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
测试中添加额外的检查以确认。
答案 4 :(得分:0)
另一个选择:在Git 2.23(2019年第三季度)中,git cherry-pick --continue
实际上可以工作!
当重置或提交多步樱桃选择或还原中的一个步骤时,命令行提示符脚本无法注意到当前状态,此状态已得到改善。
请参见commit e981bf7的Phillip Wood (phillipwood
)(2019年7月1日)。
(由Junio C Hamano -- gitster
--在commit 8a4acc5中合并,2019年7月19日)
git-prompt
:改进cherry-pick
/revert
的检测如果用户在一系列重击或还原操作中间提交或重置冲突解决方案,则
CHERRY_PICK_HEAD
/REVERT_HEAD
将被删除,因此在没有这些文件的情况下,我们需要检查.git/sequencer/todo
以查看是否正在进行摘樱桃或还原。查看
cherry-pick
或revert
是否在进行中,如果用户在一系列选择或还原操作的中间提交了与“git commit
”的冲突解决方案,则{{ 1}} /CHERRY_PICK_HEAD
将不存在,因此我们必须读取REVERT_HEAD
文件。