我在尝试 cherry pick 时陷入了一个奇怪的循环。这是我所做的,以及问题所在。
我有两个分支:mainline 和 temp。我想挑选一个从主线到临时的特定提交。我正在这样做,如下所示。
-
git checkout temp
-
git cherry pick <commit sha>
- 现在,我得到:
Segmentation fault: 11
我重新运行 2) 中的命令并得到:
Unable to create ...git/index.lock': File exists
============================================= =====================
现在我运行
rm -f ./.git/index.lock
再试一次
git cherry pick <commit sha>
现在我明白了:
错误:以下未跟踪的工作树文件将被 merge 覆盖: 我的文件.java
... 对于一个甚至不存在的文件。我以前有过它,但我重命名了它,所以该名称下的文件不在存储库中。
- 我跑
git status
现在我在未跟踪的文件 下看到文件myfile.java。现在它甚至出现在编辑器中。我可以从编辑器中删除它,但不能从 git 存储库中删除它。我得到pathspec 'myfile.java' did not match any files
- 好的,所以我从编辑器中删除文件,重新运行
cherry-pick
然后我回到步骤 3)。
这里发生了什么,我该如何选择? :D
最佳答案
我不知道你为什么会出现段错误。我建议确保您使用最新的 git 版本。
另一种挑选方法是从提交中创建一个补丁并应用它:
git checkout temp
git format-patch -1 <commit sha>
git apply 0001.....patch
关于git:无法挑选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41532242/