使用Git进行Cherry-pick操作时出现冲突的解决方法

8

我有两个分支Z和M,其中Z已经有一些修改,而M也有一些冲突的修改。我想将Z的第一个修改合并到M中。当我尝试查看哪些修改仍未解决时。 (实际上还有一些其他的修改,但这已经显示了问题)

$ git checkout M
$ git cherry M Z
+ 153c2f840f2192382be1fc435ceb069f0814d7ff
+ 4a7979d5dd526245b51769db21acf4c286825036

$ git cherry-pick 153c2f840f2192382be1fc435ceb069f0814d7ff
error: could not apply 153c2f8... add Z
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
• (M|CHERRY-PICKING) $ git st
# On branch M
# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      README.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
• (M|CHERRY-PICKING) $ vim README.txt 

我在这里解决了冲突。

• (M|CHERRY-PICKING) $ git add README.txt
• (M|CHERRY-PICKING) $ git ci -m'cherry picked'
  [M dc5de35] cherry picked
  1 file changed, 1 insertion(+), 1 deletion(-)
• (M) $ git cherry M Z
+ 153c2f840f2192382be1fc435ceb069f0814d7ff
+ 4a7979d5dd526245b51769db21acf4c286825036

提交了更改后,它仍然认为没有挑选任何更改。我原本期望的是:
- 153c2f840f2192382be1fc435ceb069f0814d7ff
+ 4a7979d5dd526245b51769db21acf4c286825036

一周后我怎么知道我已经合并了153c2f? 如何进行cherry-pick使其知道该合并内容?

1个回答

3

你如何知道呢?

使用git cherry是无法知道的,因为它只能识别具有相同git patch-id参见手册)的提交,即不能识别那些您必须解决非常规冲突的提交。

因此,您需要查看提交消息来确定。

未来的合并如何知道这个cherry-pick?

由于您在应用cherry-pick更改时已解决冲突,因此当您将整个分支合并到未来时,该提交应该可以轻松合并。

如果您真的担心git记住了您如何解决冲突,您可以启用git rerere

git config --global rerere.enabled true

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