如何结束Git Cherry-Pick?

Stu*_*ner 43 git version-control cherry-pick git-cherry-pick

昨天我挑选了两个提交到我的主分支,其中一个引起了合并冲突,我解决了它们,承诺并将它们推向原点.今天我收到以下错误时试图从服务器拉出来:

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

Git状态如下:

$ git status
# On branch main
# Your branch is behind 'origin/main' by 2 commits, and can be fast-forwarded.
#
$
Run Code Online (Sandbox Code Playgroud)

我试过以下无济于事:

$ git cherry-pick --continue
usage: git cherry-pick [options] <commit-ish>
$
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*her 111

下次尝试git cherry-pick --abort,否则你所做的应该或多或少的工作.


Stu*_*ner 11

解决了以下内容:rm .git/CHERRY_PICK_HEAD我意识到这很危险,因为这并不能保证git内部的一致性,但到目前为止我没有问题......

  • 当然,这对于*大多数人来说都是有效的,但是这是一些最糟糕的做法的例子,对于某些*人来说可能是灾难性的. (4认同)

Von*_*onC 9

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

请参阅Nguy?n Thái Ng?c Duy ( ) 的提交 3e7dd99(2018 年 8 月 16 日(由Junio C Hamano合并-- --commit 39e415c,2018 年 8 月 20 日)pclouds
gitster

樱桃挑选:修复 --quit 不删除 CHERRY_PICK_HEAD

--quit应该是--abort但没有恢复HEAD
留下CHERRY_PICK_HEAD来可能会导致其他cherry-pick仍在进行中的命令错误(例如“ git commit --amend”将拒绝工作)。也清洗一下

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


Von*_*onC 7

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

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

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