如何使用单独的解决分支解决 Git 冲突?

How to do Git conflict resolution using a separate resolution branch?

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

  1. 硕士
  2. 分支-a
  3. 分支-b
  4. 分支-c
  5. 开发

我为分支 a (PRA-1)、分支 b (PRB-1)、分支 c (PRC-1) 创建了 PR(拉取请求)。我的同事审查完了我的代码。因为我知道 branch-a、branch-b、branch-c 会相互冲突,所以我创建了一个解决冲突的分支。

我从 master 解决冲突,并在解决任何冲突的同时继续合并 branch-a、branch-b、branch-c。然后,一旦它们全部完成,我将这个解决冲突的分支合并到分支-a、分支-b、分支-c。

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

如果需要,可以使用 git rerere (https://git-scm.com/blog/2010/03/08/rerere.html and http://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