我在线阅读了该rebase命令不应在公共分支上运行的信息。我有以下情况:
master
的提交A1 <-A2 <-A3
stable
从master
分支到A1,提交为B1
dev1
从stable
分支到B1,并提交了C1 <-C2 <-C3
dev2
从dev1
分支到C2,并提交了D1 <-D2
现在,如果我想用stable
的更新来更新master
,我将运行git rebase master
并强制执行。现在,dev1
在stable
的基础上重新获得master
的更新,并且dev2
同时需要master
和dev1
进行重新建立在dev1
之上。
在这种情况下,只要我遵循订单,是否可以在stable
,dev1
和dev2
分支上运行rebase命令?如果这样做不可行,那么将最新的master
合并到stable
和最新的master
,dev1
更新到dev2
的替代方法是什么?我唯一想到的就是创建一个拉取请求,merge
代码,然后重新分支。是更好的选择还是我缺少什么?
答案 0 :(得分:1)
With Git 2.18+,您无需进行所有这些重新设置:只需一个:
git checkout stable
git rebase --rebase-merges master
dev1
和dev2
也应重新设置基础:您将需要将本地分支重置为那些新的重新建立基础的HEAD。
在您的情况下,如果您为master
,stable
,dev1
和dev2
设置了本地分支,则意味着(stable
中只有一个基准)将为所有相关分支(dev1
和dev2
)重新设置
--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
!