如何重新变基到其他分支?

How to re-rebase to other branch?

我在一个专门的本地分支机构 dev 工作了一段时间,通过在组织远程 master 分支机构上的标准重新定位:

    o-----o-----o  dev (local branch)
   /
--o-----o---  master 


                o'-----o'-----o' dev 
               /
--o-----o-----o--  master 

etc.

目前还不是,组织切换到另一个分支作为主要发展的基础。

                  o'-----o'-----o' dev 
                 /
----o-----o-----o--  master 
     \
      o-----o-----o-----o-----o-- new_master

由于超出此处主题的原因,在此之前我无法将我的更改与远程 master 同步,并继续在本地 master 上冲浪,从远程主机进一步更新并以 dev.

为基础

现在,在使用我的结果之前,该组织希望我的工作重新基于 new_master

                  o'-----o'-----o'-- dev (former) 
                 /            | how/when?
----o-----o-----o-----o-----o-+---  master 
     \                        | how/when?
      o-----o-----o-----o-----o---- new_master
                               \
                                o''-----o''-- dev (new: maintain old dev commits)

我的猜测是,我必须等待提交后 masternew_master (x) 之间的合并,我目前基于 with dev (a),在我可以直接在 new_master:

上再次变基之前(在 (x) 之后或在 (x) 处)
                  o'-----o'-----o' dev (former) 
                 /            
----o-----o-----a-----b-----c---  master 
     \                       \  merge?
      o-----o-----o-----o-----x-- new_master
                               \
                                o''-----o''-- dev

这是正确的,还是我在最终合并 dev 时遗漏了一些无意的历史重写,特别是 new_master

这样做是这样的:

git rebase --onto new_master master dev

所以....采用所有 dev 修订,丢弃 master 上的修订,将它们放在 new_master

之上