【问题标题】:How to do Git conflict resolution using a separate resolution branch?如何使用单独的解决分支解决 Git 冲突?
【发布时间】:2015-11-19 20:06:41
【问题描述】:

我在本地有以下分支机构:

  1. 主人
  2. 分支-a
  3. 分支-b
  4. 分支-c
  5. 开发

我为 branch-a (PRA-1)、branch-b (PRB-1)、branch-c (PRC-1) 创建了 PR(Pull Request)。我的同事完成了对我的代码的审查。由于我知道 branch-a、branch-b、branch-c 会相互冲突,所以我创建了一个冲突解决分支。

我基于 master 解决冲突,并在解决任何冲突的同时继续合并 branch-a、branch-b、branch-c。然后,一旦所有这些都完成,我将这个冲突解决分支合并到分支-a、分支-b、分支-c。

现在我的初始拉取请求已经过代码审查,我希望我的同事审查分支 a (PRA-2)、分支 b (PRB-2) 和分支 c (PRC-2) 的冲突解决他们各自的第二个拉取请求。

【问题讨论】:

  • 您可以将 branch-b 和 branch-c 合并到 branch-a 中并重新要求进行代码审查。为什么要另一个分支来解决冲突?
  • 我不想把所有东西都合并到master上。所以我想我会创建一个中间分支来解决冲突,然后将此分支合并到每个单独的分支(a/b/c)。我的目标是在我的 branch-a、branch-b、branch-c 分支中解决冲突的代码。
  • 但是您的 3 个分支将拥有相同版本的项目。这就是您想要的,或者您只想要一个合并分支 a、分支 b 和分支 c 的分支?
  • 你是对的。我将拥有相同版本的项目。嗯,既然你提到了,我在想如何保持我的分支更改,并将冲突解决部分带入每个单独的分支。好的,这就是我想要的:branch-a 应该有自己的更改,并且只需要不与其他人冲突的部分。 branch-bbranch-c 也是如此。这样我就可以将这些分支中的任何一个合并到 master 中而不会发生冲突。
  • 如果它解决了你的问题,你能验证我的答案吗?

标签: git github version-control merge git-merge-conflict


【解决方案1】:

如果需要,可以使用 git rerere(https://git-scm.com/blog/2010/03/08/rerere.htmlhttp://git-scm.com/docs/git-rerere)。此命令可让您保存冲突解决方案,以便在需要时再次完成解决方案。 因此,为了保存冲突解决方案,您必须将三个分支合并到 master 分支中。但是你不想要,因为你在等待这个合并。 我建议这些步骤:

启用 git rerere 缓存:

git config --global rerere.enabled true

从 master 创建新分支

git checkout master
git branch resolution_branch

合并解决三个分支的冲突

git merge branch-A
# You resolve conflict

git merge branch-B
# You resolve conflict

git merge branch-C
# You resolve conflict

现在,当您合并这些分支时,Git 将解决冲突。但是,您必须将文件添加到索引以进行显式解析。如果你想让 Git 在索引中自动添加文件:

git config --global rerere.autoupdate true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2017-08-13
    • 2010-09-11
    相关资源
    最近更新 更多