为什么Git在挑选多个提交时会失败?

7
我尝试合并两个仓库,以生成一个平坦(也称交错)的历史记录。我按照此链接https://dev59.com/4W7Xa4cB1Zd3GeqPpGCB#14839653中"History rewrite:"的步骤进行操作。
需要合并的两个分支位于“master”和“src/master”。然后,我编写以下内容:
$ git checkout --orphan new-master
$ git cherry-pick 9d325d6d 3f4c52ba
error: a cherry-pick or revert is already in progress
hint: try "git cherry-pick (--continue | --quit | --abort)"
fatal: cherry-pick failed
$ git cherry-pick 9d325d6d && git cherry-pick 3f4c52ba
[new-master 10f0277] Initial revision.
 7 files changed, 194 insertions(+)
 create mode 100644 __init__.py
 create mode 100644 manage.py
 create mode 100644 samples/__init__.py
 create mode 100644 samples/models.py
 create mode 100644 samples/views.py
 create mode 100644 settings.py
 create mode 100644 urls.py
[new-master 08e083c] Fixed field name in SixChambersLayer.  Added Sample.current_place.
 1 file changed, 2 insertions(+), 1 deletion(-)

所以,为什么第一个cherry pick命令失败了,而split命令却成功了?我使用的是git 1.9.1版本。

我也遇到了同样的问题,但是我的问题出现在 git 2.8.2 版本。最后我使用了 echo sha1 sha1 sha1 | xargs -n1 git cherry-pick 的方法来解决这个我不理解的问题。 - Chris Cleeland
1个回答

1

Try instead:

git cherry-pick 9d325d6d^..3f4c52ba

如我在“如何挑选一系列提交并合并到另一个分支”中提到的:
在“cherry-pick A..B”格式中,A应该比B旧。 如果它们的顺序错误,命令将会默默失败。
如果您想挑选范围为B到D(包括B和D),那么应该是B^..D。

正如在链接的SO答案中所解释的那样,我有一个SHA-1列表,需要挑选出来以便从它们构建一个新分支。换句话说,它们很少是连续的。man 7 gitrevision建议仅使用提交ID列表即可...此外,我不理解git cherry-pick的错误消息。 - Torsten Bronger
@bronger 你是按照正确的顺序(从旧到新)列出这些提交的吗?还有,你在使用哪个操作系统?(为了检查是否需要更高版本的git) - VonC
是的,它是从最旧到最新的。它是Ubuntu 14.04及其git。 - Torsten Bronger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接