为什么Git Cherry-pick不能继续?

10
我正试图从两个不同的工作分支中挑选更改,即我想将来自分支linear的最后5个提交挑选到分支diagonal
git cherry-pick -n -x linear~6..linear

预计第一个挑选的提交会出现一些合并冲突。我使用git status解决了它们,并使用git add更新了索引。 现在我想继续处理其余的提交,但是……
git cherry-pick --continue`

引导至(抱歉它是翻译过的,英文错误信息可能略有不同):
error: Your local changes will be overwritten by "cherry-pick".
Note: Stash your changes by using "stash" in order to continue.
fatal: "cherry-pick" failed.

我做错了什么?如何在解决冲突的同时,只提交一个合并自多个提交的cherry-pick?对我来说这很重要,因为随后的提交将撤销其中的几个提交。
这可能是“如何在SourceTree中执行git cherry-pick --continue?”的重复问题,但我没有看到我的问题在那里得到回答。
1个回答

12

既然你已经解决了冲突文件,那么你需要先将它添加到Git cherry-pick中才能继续。

git add <modified file-name>
git commit -m "committing changes for file"
git cherry-pick --continue

希望这能有所帮助。


2
不,这并没有帮助。如上所述,我确切地执行了此操作,但它导致了翻译错误消息。即使 git status 表示没有未暂存的更改。 - benni
你提交了修改后的文件吗?请发布git状态的输出。 - SnehalK
2
不,我没有提交,因为更改应该在一个提交中完成(请参见上文)。cherry-pick命令表示,这应该是可能的。 - benni
1
@benni:我认为你需要先提交更改,然后继续使用git cherry-pick。不过,你不需要将它们推送到仓库中。在“git add”之后,更改应该只添加到提交对象中。一旦你成功完成了“git cherry-pick --continue”,那么就可以一次性将它们全部推送。 - SnehalK
"git add", "git stash ...","git cherry-pick --continue",然后弹出您的暂存区。这对我很有用。 - clinux
我认为它没有起作用的原因是因为 "-n"(无提交)标志。Git从未进入“cherry pick”模式,因此 --continue 不起作用。 - Penguin Knees

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