如何处理派生分支的并行拉取请求?

时间:2016-12-28 17:53:14

标签: git bitbucket git-branch pull-request

我的团队希望我为项目中的每个逻辑更改创建一个单独的拉取请求(使用Bitbucket),以便轻松审核和批准。

我需要实现功能A,B和C.

我创建了分支A,实现了第一个更改,并为A - > master创建了一个pull请求。现在,在等待审核和批准的同时,我想开展下一个功能。我创建了一个派生自A的分支B.

master
      \
       A
        \
         B

现在我也完成了B的实施,并希望为我的团队创建另一个拉取请求进行审核。如果我这样做(B - >主人)它会向我显示A和B的两次提交(当然这是有道理的),但我不希望我的团队再次审阅A.

我知道我可以发出第二个拉取请求B - > A但是如果A合并到主控并且在B合并到A之后被删除,那么这个拉取请求会发生什么?

如何让包含A和B更改但却不相交的并行拉取请求?

2 个答案:

答案 0 :(得分:1)

为每个功能制作分支。这些被称为功能分支。如果你需要,分支另一个分支。 git checkout feature/1; git branch feature/2

          D - E - F [feature/3]
         /
A - B - C [master]
         \
          G - H [feature/1]
               \
                I - J [feature/2]

您可以同时提交feature/2feature/1,只要您明确feature/2取决于feature/1

  

我知道我可以发出第二个拉取请求B - > A但是如果A合并到主控并且在B合并到A之后被删除,那么这个拉取请求会发生什么?

如果修改了feature/1但尚未合并,则应使用feature/2git checkout feature/2; git rebase feature/1之上重新定位 D - E - F [feature/3] / A - B - C [master] \ G - H - K - L [feature/1] \ I - J [feature/2] 。这看起来像这样,K和L是新版本。

git checkout feature/2; git rebase feature/1

然后在 D - E - F [feature/3] / A - B - C [master] \ G - H - K - L [feature/1] \ \ I - J I1 - J1 [feature/2] 之后你就拥有了这个:

git push --force

然后在功能/ 2上git reflog。请注意,在rebase之后,原始更改仍然存在于本地存储库中。他们最终会被垃圾收集,但同时如果你犯了错误,你可以通过检查feature/1来取回它们。

合并和删除 D - E - F [feature/3] / A - B - C ------------- M [master] \ / G - H - K - L \ I1 - J1 [feature/2] 后的相同程序(顺便说一句,您仍然拥有您必须删除的本地分支)。删除分支只会删除标签,分支仍在那里(除非他们"合并"通过变基或挤压)。你会有这个。

feature/2

您应该使用git rebase master D - E - F [feature/3] / A - B - C ------------- M [master] \ / \ G - H - K - L I2 - J2 [feature/2] 重新加入主页。

git push --force

然后feature/3

同样,如果feature/3仍处于审核阶段,您应该将master重新定位到feature/1以确保其仍然有效并使集成商的工作更轻松。

如果所有这些看起来有点复杂,请提交feature/2并等到它被接受并合并后提交feature/2。你仍然应该做最后一点,将master重新定义到scala.io.Source.fromString(string).getLines.toList

答案 1 :(得分:0)

所以,你有一个分支。

  • 从名为A。
  • 的主人创建一个新分支
  • 为分支A
  • 创建拉取请求
  • 从分支A创建另一个分支B。

现在,由于B是从A创建的,因此它也将具有来自A的提交。 即使A合并到主分支并且分支A的拉取请求将关闭,分支A仍然存在。

  • 因此,在分支A上采用主要变基( git rebase master
  • 然后从A
  • 对B分支进行改造
  • 最后在分支B上接受主要的变基。