有两个不同的 git 分支。在一个开发中(Branch1)。
在其他分支中,一些 PoC 工作正在进行(Branch2)。现在,我想挑选从 Branch1 到 Branch2 的更改,以便 Branch2 是最新的。
现在,在挑选 4 或 5 个更改之后,我遇到了一些合并冲突,我无法继续进行进一步的挑选。
是否,我需要在进行下一个樱桃挑选之前解决所有冲突,或者我可以以某种方式推迟冲突解决,直到我挑选所有更改(并一起解决所有冲突)?
此外,在这种情况下是否建议进行樱桃挑选或分支合并?
有两个不同的 git 分支。在一个开发中(Branch1)。
在其他分支中,一些 PoC 工作正在进行(Branch2)。现在,我想挑选从 Branch1 到 Branch2 的更改,以便 Branch2 是最新的。
现在,在挑选 4 或 5 个更改之后,我遇到了一些合并冲突,我无法继续进行进一步的挑选。
是否,我需要在进行下一个樱桃挑选之前解决所有冲突,或者我可以以某种方式推迟冲突解决,直到我挑选所有更改(并一起解决所有冲突)?
此外,在这种情况下是否建议进行樱桃挑选或分支合并?
在继续之前:
安装适当的合并工具。在 Linux 上,我强烈建议你使用 meld:
sudo apt-get install meld
配置您的合并工具:
git config --global merge.tool meld
然后,按以下方式迭代:
git cherry-pick ....
git mergetool
git cherry-pick --continue
做,我需要解决所有的冲突,然后再继续下一个樱桃 -pick
是的,至少使用标准的 git 设置。有冲突时你不能挑剔。
此外,一般来说,你拥有的越多,冲突就越难解决,因此通常最好一个一个地解决它们。
也就是说,您可以一次挑选多个提交,这将满足您的要求。参见例如How to cherry-pick multiple commits。例如,如果某些提交撤消了早期的提交,这将很有用。然后,您会想一口气挑选所有内容,这样您就不必为以后的提交撤消的更改解决冲突。
此外,在这种情况下是否建议进行樱桃挑选或分支合并?
一般来说,如果你想让一个特性分支与主开发保持同步,你只需合并 master -> feature 分支。主要优点是稍后合并功能分支-> 主将少得多痛苦。
仅当您必须从功能分支中排除 master 中的某些更改时,Cherry-picking 才有用。不过,这会很痛苦,所以我会尽量避免它。
另外,要完成@claudio 所说的,在挑选樱桃时,您还可以使用 merging strategy。
所以你可以这样git cherry-pick --strategy=recursive -X theirs commit
或git cherry-pick --strategy=recursive -X ours commit