git cherry-pick提示存在本地更改,但git status没有显示任何更改

15
更新:抱歉,我切换到另一个分支,然后再切换回来就无法再现这个问题了 :(

听起来你的索引出现了不同步的情况。 - Cascabel
@Jefromi,所以切换分支修复了这个问题。重新同步索引的“官方”方法是什么?你有任何想法我是如何陷入这种状态的吗?(如果您愿意回答,我会相应更新我的问题) - Benjol
我真的不确定它是如何发生的。reset --soft 可能会验证一些事情,而 reset--mixed,默认设置)将从当前提交更新索引。 - Cascabel
6个回答

11

我遇到了这个问题。 错误是- error: Your local changes would be overwritten by cherry-pick. hint: Commit your changes or stash them to proceed. fatal: cherry-pick failed 原因是我在暂存区有一个不想提交的文件。我把那个文件从暂存区移走后,重新尝试cherry-pick就成功了。


2

我不太确定问题出在哪里,但您可以使用以下语句重置您的工作副本:

git reset --hard origin/master

谢谢,但我认为我没有一个origin/master,这是一个独立的代码库。 - Benjol
好的,你能提供你的 .git/config 文件吗? - scheffield
2
没有必要重置到原始主分支。你真的不想移动分支 - 它已经在你想要的位置,只是索引/工作树中有一些奇怪的东西。重置到 HEAD(git reset可能 git reset --hard)就足够了。 - Cascabel
3
这是一个稍微有点危险的建议,不是每个人都在主分支上工作或想要重置它。 - Stuart Axon
12年后,这就是我需要的解决方案。谢谢。(不过我重置到了与主分支不同的分支。) - xelf

2
从cherry-pick的补丁在应用更改的接缝处没有对齐。使用--no-commit选项查看发生了什么。

1

我在使用虚拟机上的git时遇到了这个问题,其中工作副本是VMware共享文件夹。我不知道解决方案是什么。在我的情况下,我能够通过git stash将它认为存在的更改移开(经检查似乎完全为空);在更改被移开后,我可以在干净的工作副本上进行挑选。 (之后,我只需删除stash即可。)


1
在我的情况下,运行时出现了错误。
git cherry-pick -x <commit1> <commit2> <commit3>

单独运行樱桃挑选(cherry-picks)是有效的:

echo <commit1> <commit2> <commit3> | xargs -n 1 git cherry-pick -x 

0

我通过谷歌搜索关于那个奇怪消息的问题而来,我想发表我的看法。

就我所知,我的情况如下:

  • 真正的代码存储在虚拟机中
  • Mac OS 通过 Samba 网络共享连接到它
  • Visual Studio Code 运行在我的 Mac 上
  • git 是从 VS Code 中运行的

我经历了 OP 所写的内容,并且没有做任何事情,只是等待就解决了问题! :)

也许是缓存或网络问题,谁知道呢。


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