最初,我有这样的经历:
C---D (branch1)
/
A---B (master)
因为我需要做一些其他的事情(与
branch1
无关),我决定创建一个新的分支(称为branch2
)。我在branch2
上做了一些承诺,然后推动了它们。现在,我的意图是把
master
作为branch2
的根。但是,我不小心做到了: E---F--G (branch2)
/
C---D (branch1)
/
A---B (master)
有没有一种干净的方法可以使
branch2
直接从master
中产生,如下所示? E---F--G (branch2)
|
| C---D (branch1)
|/
A---B (master)
最佳答案
问题中的ascii图形与第二个示例中描述--onto
man page中git-rebase
标志用法的图形有着不可思议的相似之处:--onto
选项的另一个例子是重新定位分支的一部分。如果
我们有以下情况:
H---I---J topicB
/
E---F---G topicA
/
A---B---C---D master
然后命令
git rebase --onto master topicA topicB
会导致:
H'--I'--J' topicB
/
| E---F---G topicA
|/
A---B---C---D master
该示例表明,通过运行
git rebase --onto master branch1 branch2
但是,您还可以写下,当您的repo看起来像第二个ascii图时,您已经将
branch2
推送到了某个远程位置。你和其他人共用遥控器吗?在这种情况下,三思而后行!在重新定位之前,因为它是历史重写的一种形式,并且you should never rewrite history has been shared。