如何在GitHub中轻微冲突时提交多个pull-requests

Sam*_*Fen 7 git github pull-request

我正在向项目提交两个独立的新功能作为pull-requests.每个功能都在主题分支中,每个功能都从主服务器的分支开始分支.

          /-- feature1
master ---
          \-- feature2
Run Code Online (Sandbox Code Playgroud)

问题是虽然任何一个分支都可以自己干净地合并到master中,但是当合并第二个分支时,它会产生冲突.这不是因为这些功能相互依赖,而是碰巧碰到相同的代码.

一个简单的例子:如果原始文件是逗号分隔的列表,并且每个提交想要向其添加一个新项目,它可能如下所示:

master:
a,
b,
c

feature1:

- c
+ c,
+ d

feature2:

- c
+ c,
+ e
Run Code Online (Sandbox Code Playgroud)

在一天结束时,如果两个拉取请求都被接受,则d和e最终应该以任何顺序添加到列表中(因为这些特征是完全独立的,因此它们不相互依赖).但是,如果你试图将它们拉进去,你就会发生冲突.

处理这个问题的最佳方法是什么?feature2应该基于feature1的结尾,然后它们应该以正确的顺序合并到master中吗?

master ---
          \--- feature1
              \------ feature2
Run Code Online (Sandbox Code Playgroud)

如果我这样做,feature2的pull-request会显示feature2提交,还是会显示所有feature1 + feature2提交?

或者我应该在feature1合并到master之后重新设置feature2?

ran*_*dom 6

由于这两个功能都不是建立在另一个基础上的,因此您应该像最初那样从 master 分支出来。即使他们触及一个共同的文件(微不足道),这也是如此。

然后在第一个 (feature1) 与原始 master 合并后重新设置第二个拉取请求 (feature2)(如果首先合并 feature2,则重新设置 feature1)。

git fetch upstream
git rebase upstream/master feature2
Run Code Online (Sandbox Code Playgroud)

在这里,我们从上游获取提交(您从中分叉的原始源),然后使用其提交重新定位我们的本地功能分支

然后修复您可能遇到的任何合并冲突并将该提交推回您的分支。功能 2 的拉取请求将更新,现在包括修复可能的合并冲突的提交,并使合并回原来的更清晰/更容易。

或者原始存储库将只获取您的两个拉取请求分支并将它们合并到自己中,修复可能出现的任何冲突。

  • 旧线程但仍然相关。对于大型开发团队来说,这几乎是一个不可用的解决方案。当然,如果您只(比方说)与另一个人合作并且您知道他们也提交了拉取请求,那么您可以手动重新设置基准,但是如果有 10、20、30 个请求发送到同一目的地,该怎么办同时?这些拉取请求如何排队?谁对此负责? (2认同)