将一个分支重新绑定或合并到master中合并的另一个功能分支上



我正在处理一个特性分支场景,我有点不确定作为"最佳解决方案">

a -- b -- c                               <-- Master

d  -- e  -- f                 <-- Branch 1 (in review)
            
d -- e -- f -- g -- h       <-- Branch 2

我开始处理Branch 1,完成了完整的实现,并打开了pull请求。但是,我需要创建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加载所有更改,我不知道用哪种方式将Master更改合并到我的Branch 2中。

互动返利还是合并?

非交互重基础应该足够

首先,确保您的本地master是最新的";upstream"/master(upstream是目标存储库的远程引用,您的PR是在这里合并的(

git switch master
git fetch upstream
git merge upstream/master

然后,在branch1启动后重播每个branch2提交,并在更新的master上重播它们。

git merge-base branch1 branch2应该为您提交branch1d

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)           

最新更新