gitcherry-pick 导致未合并的提交?

问题描述 投票:0回答:1

尝试挑选一些提交。

在随后的挑选中,它打印出的文件表明它们未合并?

> 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

看到未合并让我非常担心。

这是什么意思?

一些早期的提交实际上没有合并吗?列出的提交不是我一直在处理的任何提交。

我的文件现在混乱了吗?

git cherry-pick
1个回答
0
投票

一些早期的提交实际上没有合并吗?

术语“未合并”并不是指提交本身的状态,而是指在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
© www.soinside.com 2019 - 2024. All rights reserved.