【发布时间】:2014-05-11 07:39:38
【问题描述】:
我经常在分支上有子分支,我想重新定位到主线。考虑一下:
* (Mainline)
*
*
| * (topicA_Branch3)
| *
| *
| * (topicA_Branch2)
| *
| *
| * (topicA_Branch1)
| *
| *
|/
*
*
我想将所有这三个topicA 分支移到主线。目前,我知道两种方法:
-
在
topicA_Branch3上,执行命令git rebase Mainline。一个。此时,我将不得不删除
topicA_Branch1和2并在现在重新设置的topicA_Branch3上的正确提交上手动重新创建分支。 -
另一种方法是执行三个单独的命令:
一个。在
topicA_Branch1上,做git rebase Mainline。b.
git rebase --onto topicABranch1 <topicA_Branch1-old-SHA> topicABranch2c。
git rebase --onto topicABranch2 <topicA_Branch2-old-SHA> topicABranch3d。这有点麻烦……
是否有我想要的命令来变基分支并带来它的子分支?
为了清楚起见,我想这样结束:
* (topicA_Branch3)
*
*
* (topicA_Branch2)
*
*
* (topicA_Branch1)
*
*
* (Mainline)
*
*
*
*
【问题讨论】:
-
作为一个有趣的旁注,
git filter-branch包含自动执行此操作所需的所有机制。但是filter-branch没有任何内置的rebase功能。再加上它是一个非常大的(大)锤子,而不是这个相对简单的问题。 :-)