如何将两个有相关更改的分支合并到master中?

How do merge two branches with related changes into master?

在 GIT 我有 2 个分支和一个主控

BRANCH1 从 master 中检出并且它有 一些提交 要合并由于某些测试原因,BRANCH1 的 master 和 合并需要一些时间。

在那段时间里,我必须在 另一个 分支上工作,即 BRANCH2。所以 BRANCH2 应该有 BRANCH1 的提交,因为我将在 BRANCH1 的提交 上做一些更改,然后 BRANCH2 也将被 合并MASTERBRANCH1 与 master 合并后的某个时间(BRANCH1 将首先合并)。

  1. 从 BRANCH1 签出,然后做一些提交,然后在 BRANCH1 合并一段时间后将其合并到 master。
  2. (或)从 MASTER 检出,然后将其与 BRANCH1 变基,然后进行一些提交,然后将其合并到 MASTER。

那么,在 BRANCH2 上进行 BRANCH1 更改,然后将其与 MASTER 合并,我可以做的最佳选择是什么?

欢迎提出任何建议 谢谢...

每当您准备好合并 branch2 时,您应该将其变基到 branch1(如果 branch1 尚未合并,或者在 master 之上(如果branch1 已合并)

这样:

  • 您通过在 master
  • 之上重播 branch2 提交来在本地解决冲突
  • 最终合并将是一个 fast-forward(微不足道的)合并。

即首发情况:

m--m--m
       \
        b1 --b1--b1--b1
              \
               b2--b2

准备好后,b1 可能已经进化并合并到 master 中:

m--m--m--m--m---------------M--m--m (master)
       \                   /
        b1 --b1--b1--b1--b1         (branch1)
              \
               b2--b2--b2--b2       (branch2)

一个rebase --onto就够了:

git rebase --onto master $(git merge-base branch1 branch2) branch2

m--m--m--m--m---------------M--m--m--b2'--b2'--b2'--b2' (branch2)
       \                   /    (master)
        b1 --b1--b1--b1--b1         (branch1)

那么 merge master 将是微不足道的