将分支变基或合并到合并到 master 中的另一个功能分支

Rebase or merge a branch onto another feature branch merged in master

我有一个正在处理的功能分支方案,我有点不确定哪种方式是“最佳解决方案”。

a -- b -- c                               <-- Master
           \
            d  -- e  -- f                 <-- Branch 1 (in review)
             \            
              d -- e -- f -- g -- h       <-- Branch 2

我开始 Branch 1 的工作,完成了完整的实现,并打开了拉取请求。但是,我需要创建 Branch 2 来开始功能实现的第二部分。

a -- b -- c               x               <-- Master
           \             /
            d  -- e  -- f                 <-- Branch 1 (Merged in Master)
             \            
              d -- e -- f -- g -- h       <-- Branch 2

由此,Branch 1 被 CI 合并到 Master 分支中。问题是 Branch 2Branch 1 加载了所有更改,我不知道如何将主更改合并到我的 Branch 2.

交互式变基或合并?

Non-interractive rebase 应该足够了

首先,确保您的本地 master 是 up-to-date 和“upstream”/masterupstream 是引用目标存储库的远程,你的 PR 被合并的地方)

git switch master
git fetch upstream
git merge upstream/master

然后在 branch1 开始后重播每个 branch2 提交,并在更新的 master.

之上重播它们

一个 git merge-base branch1 branch2 应该给你提交 d of branch1

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

这样,您将获得:

                            d' -- e' -- f' -- g' -- h'   <-- Branch 2
                           /
a -- b -- c               x               <-- Master
           \             /
            d  -- e  -- f                 <-- Branch 1 (Merged in Master)