尝试挑选一些提交。
在随后的挑选中,它打印出的文件表明它们未合并?
> git cherry-pick -n 08A7F306
MyClass1.java: unmerged (3632c18cc1522826e20e3a995cb2ec4bf3b3ab2b)
MyClass1.java: unmerged (89b187fadd2607fa85816a145a183da230aa873c)
MyClass1.java: unmerged (ac8765a8f2450aac261918af0f280b722843799f)
MyClass2.java: unmerged (6f9e8352ecf6d988583289b698c38cb927667848)
MyClass2.java: unmerged (96fd27c3f370fd9a2b721216d2f2fede02df1523)
MyClass2.java: unmerged (46b3c56a1513701474492ad0c73a4b5fa18d7c44)
error: your index file is unmerged.
fatal: cherry-pick failed
看到未合并让我非常担心。
这是什么意思?
一些早期的提交实际上没有合并吗?列出的提交不是我一直在处理的任何提交。
我的文件现在混乱了吗?
一些早期的提交实际上没有合并吗?
术语“未合并”并不是指提交本身的状态,而是指在cherry-pick操作期间工作目录/索引中受影响文件的状态。您尝试挑选的提交已合并到其原始分支中,但它们与您当前的工作树或索引冲突。
要解决合并冲突,您通常会手动编辑冲突的文件以解决差异,然后使用
git add <file>
将已解决的文件添加到索引,最后使用 git cherry-pick --continue
继续选择操作。
或者,如果您希望中止挑选操作并返回到开始之前的状态,您可以使用命令 git cherry-pick --abort
。
差异分辨率看起来像(使用meld,但您可以使用Beyond Compare、KDiff3等):
git checkout -b temp-branch
git show 3632c18cc1522826e20e3a995cb2ec4bf3b3ab2b:MyClass1.java > MyClass1_base.java
git show 89b187fadd2607fa85816a145a183da230aa873c:MyClass1.java > MyClass1_ours.java
git show ac8765a8f2450aac261918af0f280b722843799f:MyClass1.java > MyClass1_theirs.java
meld MyClass1_base.java MyClass1_ours.java MyClass1_theirs.java
# Within the merge tool, resolve the conflicts between the three versions of the file.
# Save the merged result back to MyClass1.java.
rm MyClass1_base.java MyClass1_ours.java MyClass1_theirs.java
git checkout <original-branch>
git branch -D temp-branch
git add MyClass1.java
git cherry-pick --continue