樱桃挑选一系列提交不起作用,但是单个樱桃挑选起作用

时间:2020-07-17 08:39:33

标签: git github version-control cherry-pick

我在选择一系列提交时遇到了问题,并且一直存在冲突,无法弄清问题出在哪里。不应发生冲突,因为提交是经过精心挑选的添加/修改代码,而接收分支中没有这些代码。

可理解:

我正在挑选的提交来自名为FeatureX的分支,这些提交看起来像这样:

>> git log --oneline

cbd0d94ca312 (HEAD -> FeatureX) Version 6
e1da344f20b7 Version 5
a9875369a8e4 Version 4
44d7975d975f Version 3
6955a667be84 Version 2
c7c70076c435 Version 1

现在,我有一个名为MainCode的分支,在该分支上我想从FeatureX分支中挑选上述提交。如果我单独挑选它们:

>>git cherry-pick c7c70076c435
[MainCode 7850ed1c4a4d] Version 1
 Date: Sat Jun 13 19:59:04 2020 -0700
 2 files changed, 321 insertions(+), 1 deletion(-)
 create mode 100644 STHelper.cs

>>git cherry-pick 6955a667be84
[MainCode df98023a9ac9] Version 2
 Date: Tue Jun 16 15:36:24 2020 -0700
 1 file changed, 68 insertions(+), 15 deletions(-)

>>git cherry-pick 44d7975d975f
[MainCode beede732db3f] Version 3
 Date: Tue Jun 23 14:34:27 2020 -0700
 1 file changed, 104 insertions(+), 23 deletions(-)

>>git cherry-pick a9875369a8e4
[MainCode 77664b1d36c2] Version 4
 Date: Wed Jul 8 21:25:27 2020 -0700
 1 file changed, 25 insertions(+), 15 deletions(-)

>>git cherry-pick e1da344f20b7
[MainCode 8eb1c3cf9828] Version 5
 Date: Fri Jul 10 03:39:47 2020 -0700
 1 file changed, 67 insertions(+), 19 deletions(-)

>>git cherry-pick cbd0d94ca312
[MainCode a07e9f4dbed9] Version 6
 Date: Fri Jul 10 14:28:10 2020 -0700
 3 files changed, 174 insertions(+), 35 deletions(-)
 create mode 100644 config_debug.xml

...工作正常。但是,如果我尝试将它们一起采摘……

>>git cherry-pick c7c70076c435^..cbd0d94ca312
error: could not apply 6955a667be84... Version 2
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

>>git status
On branch MainCode
Cherry-pick currently in progress.
  (fix conflicts and run "git cherry-pick --continue")
  (use "git cherry-pick --abort" to cancel the cherry-pick operation)

Unmerged paths:
  (use "git add/rm <file>..." as appropriate to mark resolution)
        deleted by us:   STHelper.cs

no changes added to commit (use "git add" and/or "git commit -a")

...存在冲突。我还尝试使用their更改(即来自FeatureX分支的更改)来尝试解决冲突...

>>git cherry-pick c7c70076c435^..cbd0d94ca312 --strategy=recursive -X theirs
error: could not apply 6955a667be84... Version 2
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

...但是它仍然不起作用。

有人可以告诉我这里是什么问题吗?

[edit]我在Windows上使用cmd.exe作为外壳。

1 个答案:

答案 0 :(得分:4)

这是一个shell问题:如注释中所述,您正在使用cmd.exe,其中^是转义字符
(例如,请参见ss64.com上的此链接:Escape characters at the Windows command line)。

您的输入字符串:

c7c70076c435^..cbd0d94ca312

变成了:

c7c70076c435..cbd0d94ca312

并且第一次提交被跳过。


如果您坚持使用cmd.exe,请使用~1(如@LasseVKarlsen建议)或^^而不是普通的^

git cherry-pick c7c70076c435^^..cbd0d94ca312