为什么cherry-pick总会导致合并冲突?

时间:2014-07-15 15:07:41

标签: git

我正在从发布分支中挑选特定的提交到我的本地工作副本。每次我从发布分支中挑选一个提交时,我都会遇到合并冲突,我必须解决这个问题,即使是看似微不足道的更改,例如:

-const char kApplicationVersion[] = "Develop";
+const char kApplicationVersion[] = "Release";

是对main.cc的提交中唯一的更改。

git status显示

You are currently cherry-picking commit 6f04be8.
  (fix conflicts and run "git cherry-pick --continue")
  (use "git cherry-pick --abort" to cancel the cherry-pick operation)

Unmerged paths:
  (use "git add <file>..." to mark resolution)

    both modified:      src/appMain/main.cc

为什么总会发生冲突?

1 个答案:

答案 0 :(得分:3)

因为这两个分支分歧了:

  • dev分支已使用const char kApplicationVersion[] = "Develop";
  • 修改了该行
  • rel分支已使用const char kApplicationVersion[] = "Release";
  • 修改了该行

一个cherry-pick将解析对共同祖先的合并,但不会为该文件创建一个实际的合并(意味着共同的祖先仍然是一个更旧的版本,其中dev分支从{{1}开始分支)

下一个樱桃选择将考虑相同的旧共同祖先,并将触发相同的合并冲突。

在“In a Git cherry-pick or rebase merge conflict, how are BASE (aka “the ancestor”), LOCAL, and REMOTE determined?

中查看(更多)内容