【问题标题】:Git Cherry-Pick and ConflictsGit Cherry-Pick 和冲突
【发布时间】:2013-11-18 18:36:14
【问题描述】:

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

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

现在,在挑选了 4 或 5 次更改后,我遇到了一些合并冲突,我无法继续进行进一步的挑选。

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

另外,在这种情况下是否建议进行cherry-pick或分支合并?

【问题讨论】:

  • 避免这些樱桃挑选冲突的一种可能方法是按照最旧提交到最新提交的顺序进行挑选,即基于提交日期。

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


【解决方案1】:

在继续之前:

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

    sudo apt-get install meld
    
  • 配置您的合并工具:

    git config --global merge.tool meld
    

然后,按以下方式迭代:

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

【讨论】:

    【解决方案2】:

    请,我需要先解决所有冲突,然后再继续下一步 樱桃采摘

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

    此外,一般来说,你拥有的越多,冲突就越难解决,所以通常最好一个一个地解决。

    也就是说,您可以同时挑选多个提交,这将满足您的要求。参见例如How to cherry-pick multiple commits 。例如,如果某些提交撤消了之前的提交,这将很有用。然后,您会想一口气挑选所有内容,这样您就不必为后续提交撤消的更改解决冲突。

    此外,是否建议在此进行cherry-pick或分支合并 案例?

    一般来说,如果你想让一个特性分支与主开发保持同步,你只需合并 master -> 特性分支。主要优点是后期合并功能分支 -> master 会少很多痛苦。

    仅当您必须从功能分支中排除 master 中的某些更改时,Cherry-picking 才有用。不过,这会很痛苦,所以我会尽量避免。

    【讨论】:

      【解决方案3】:

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

      所以你可以像 git cherry-pick --strategy=recursive -X theirs commitgit cherry-pick --strategy=recursive -X ours commit 这样的东西

      【讨论】:

        猜你喜欢
        • 2016-02-11
        • 1970-01-01
        • 2012-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-24
        相关资源
        最近更新 更多