git:无法挑选

wes*_*eyy 6 git cherry-pick

在尝试樱桃挑选时,我陷入了一个奇怪的循环中.这就是我的工作,以及问题所在.

我有两个分支:主线临时.我想从主线到临时选择一个特定的提交.我这样做如下.

  1. git checkout temp
  2. git cherry pick <commit sha>
  3. 现在,我得到: Segmentation fault: 11
  4. 我从2)重新运行命令,并得到: Unable to create ...git/index.lock': File exists

    ================================================== ==================

  5. 现在我跑了 rm -f ./.git/index.lock

  6. 再试一次 git cherry pick <commit sha>

  7. 现在我明白了:

    错误:以下未跟踪的工作树文件将被merge:myfile.java覆盖

...对于一个甚至不存在的文件.我之前已经拥有它,但我将其重命名,因此该名称下的文件不在存储库中.

  1. 我运行git status,现在我在未跟踪文件下看到文件myfile.java.现在它甚至出现在编辑器中.我可以从编辑器中删除它,但不能从git存储库中删除它.我明白了pathspec 'myfile.java' did not match any files
  2. 好的,所以我从编辑器中删除文件,重新运行,cherry-pick然后我回到第3).

这里发生了什么,我怎么才能做我的樱桃挑选?:d

Iga*_* S. 1

我不知道你为什么会出现分段错误。我建议确保您使用最新的 git 版本。

樱桃选择的另一种方法是从提交创建补丁并应用它:

git checkout temp
git format-patch -1 <commit sha>
git apply 0001.....patch
Run Code Online (Sandbox Code Playgroud)

  • @wesleyy 分段错误是您的第一个问题。其他问题只是它的后果。正如您自己所说:当您解决了后者时,您就回到了前者。也许您想将此事提交到 git 邮件列表。只需写信给“git@vger.kernel.org”即可。请务必包含“GIT_TRACE=2 gitcherry-pick that-c​​ommit-sha1”的输出,并包含您正在使用的版本(“git version”)。 (2认同)