每个人都根据基准而在共享分支机构上重新建立基础

时间:2019-01-30 04:12:46

标签: git rebase git-rebase

我在线阅读了该rebase命令不应在公共分支上运行的信息。我有以下情况:

master的提交A1 <-A2 <-A3
stablemaster分支到A1,提交为B1
dev1stable分支到B1,并提交了C1 <-C2 <-C3
dev2dev1分支到C2,并提交了D1 <-D2

现在,如果我想用stable的更新来更新master,我将运行git rebase master并强制执行。现在,dev1stable的基础上重新获得master的更新,并且dev2同时需要masterdev1进行重新建立在dev1之上。

在这种情况下,只要我遵循订单,是否可以在stabledev1dev2分支上运行rebase命令?如果这样做不可行,那么将最新的master合并到stable和最新的masterdev1更新到dev2的替代方法是什么?我唯一想到的就是创建一个拉取请求,merge代码,然后重新分支。是更好的选择还是我缺少什么?

1 个答案:

答案 0 :(得分:1)

With Git 2.18+,您无需进行所有这些重新设置:只需一个:

git checkout stable
git rebase --rebase-merges master

dev1dev2也应重新设置基础:您将需要将本地分支重置为那些新的重新建立基础的HEAD。

在您的情况下,如果您为masterstabledev1dev2设置了本地分支,则意味着(stable中只有一个基准)将为所有相关分支(dev1dev2)重新设置

--x--x--x--x (master)
      \
       s--s--s (stable)
              \
               d--d (dev1)
                   \
                    d--d (dev2)

git checkout stable; git rebase --rebase-merges master将执行以下操作:

--x--x--x--x (master)
            \
             s'--s'--s' (stable)
                      \
                       d'--d' (dev1)
                            \
                             d'--d' (dev2)

无需重新设置stable,然后重新设置dev1,然后再重新设置dev2