在 Git 中变基为 Master 之前与另一个功能分支合并

Merging with another feature branch before rebasing to Master in Git

所以我试图了解 Git 如何处理某些流程以及一些已经使用的做法。

假设我们有一个 Git 存储库,其中有一个名为 master 的分支。我们还有两个从 master 同时创建的分支。我们称它们为 branch_onebranch_two

branch_one 已经完成了特定功能的工作。我目前正在开发 branch_two。为了这次对话,我们假设我无法将 branch_one 合并到 master,因为它正在等待其他开发人员的批准。

这是问题所在:

我需要 branch_one 的所有工作才能继续 branch_two 的工作。

这是我目前的流程:

1) 合并 branch_onebranch_two.
2) 在 branch_two.
上工作 3) 在提交拉取请求之前将 branch_twomaster 变基。

呃哦。 rebase 在 30 多个补丁上有冲突。我假设这是因为合并(第 1 步)更改了 branch_two 的头部。我可能假设不正确。

显然,我想在我的版本控制过程中避免大量的冲突解决步骤。

所以我的问题:

是否有更好的方法来处理这种类型的过程,其中一个功能分支需要从另一个功能分支进行更改,但不包含大量冲突?

您 运行 陷入 GIT 中的一个常见陷阱。解决方案总是,提前想好。在您的场景中,提前知道您是否需要一个分支的功能将使您能够以一种避免此问题的方式进行分支:

从 master 分支创建一个 epic-branch

git checkout -b epicBranch

epicBranch

中创建 branch_onebranch_two

git checkout -b branch_one git checkout -b branch_two

一旦您需要 branch_one 的功能,您就可以 PR 并将 branch_one 合并到 epicBranch 然后将 epicBranch 合并到 branch_two

git checkout branch_two
git merge epicBranch

现在您可以在 branch_two 中对 branch_one 进行更改,而无需关闭分支的开销。

您将拥有提交历史记录,并且在合并或变基时不应 运行 出现任何问题。

您还可以通过将需要的功能提交到一个可以在分支之间共享的自己的分支中来避免很多麻烦。

您需要一个集成分支,由主 HEAD 制作:

  • 在集成中合并 branch1
  • 在集成之上对 branch2 进行变基。

如果 branch1 在其验证上下文中需要额外的工作,请再次合并新的 branch1 提交。
在某个时候,branch1 将合并到 master。

然后,无论何时您想要验证 branch2,首先在更新的集成分支之上对其进行变基。然后将其合并到集成中(使用 --no-ff:无快进合并)。

最后,准备好后将branch2合并到master。那里没有冲突。

有关此工作流程的更多信息, (far better than Gitflow)