Git Cherry-Pick和Conflicts

时间:2013-11-07 07:46:19

标签: git cherry-pick git-cherry-pick

有两种不同的git分支。在一个开发中(Branch1)。

在其他分支中,一些PoC工作正在进行(Branch2)。现在,我想挑选从Branch1到Branch2的更改,以便Branch2是最新的。

现在,在挑选了4或5个变化之后,我发现了一些合并冲突,我无法继续进行更多挑选。

在进行下一次樱桃挑选之前,我需要解决所有冲突吗?或者我能否以某种方式推迟解决冲突,直到我挑选所有更改(并一起解决所有冲突)?

此外,是否建议在这种情况下进行樱桃挑选或分支合并?

3 个答案:

答案 0 :(得分:48)

继续之前:

  • 安装合适的mergetool。在Linux上,我强烈建议你使用meld:

    sudo apt-get install meld
    
  • 配置mergetool:

    git config --global merge.tool meld
    

然后,按以下方式迭代:

git cherry-pick ....
git mergetool
git cherry-pick --continue

答案 1 :(得分:26)

  

在继续下一步之前,我需要解决所有冲突   cherry -pick

是的,至少使用标准的git设置。在有冲突时你不能挑选。

此外,一般情况下,冲突越难以解决,因此通常情况下,逐一解决冲突会更好。

那就是说,你可以一次性挑选多个提交,这可以满足你的要求。参见例如How to cherry-pick multiple commits。如果例如某些提交撤消先前的提交,这将非常有用。然后你想要一次性挑选所有内容,这样你就不必解决因以后提交而撤消的更改的冲突。

  

此外,建议在此进行樱桃挑选或分支合并   情况?

通常,如果您希望功能分支与主开发保持同步,则只需合并master - >特色分支。主要优点是后来的合并功能分支 - >掌握将不那么痛苦。

只有在必须从功能分支中排除master中的某些更改时,才能使用Cherry挑选。不过,这将是痛苦的,所以我试图避免它。

答案 2 :(得分:0)

此外,要完成@claudio所说的内容,在摘樱桃时,您还可以使用merging strategy

所以您可以使用类似git cherry-pick --strategy=recursive -X theirs commitgit cherry-pick --strategy=recursive -X ours commit