如何将分支的一部分变基到主分支?
How can I rebase part of a branch to the master branch?
原来我是这样的:
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 图与描述 git-rebase
man page 中 --onto
标志用法的第二个示例中的那些非常相似:
Another example of --onto
option is to rebase part of a branch. If
we have the following situation:
H---I---J topicB
/
E---F---G topicA
/
A---B---C---D master
then the command
git rebase --onto master topicA topicB
would result in:
H'--I'--J' topicB
/
| E---F---G topicA
|/
A---B---C---D master
该示例表明您将在 运行
之前到达所需的情况
git rebase --onto master branch1 branch2
但是,您还写道,当您的回购看起来像您的第二个 ASCII 图时,您已经将 branch2
推送到某个远程。您是否与其他人共享有问题的遥控器?在那种情况下,在变基之前三思(或三次!),因为它是历史重写的一种形式,you should never rewrite history has been shared.
原来我是这样的:
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 图与描述 git-rebase
man page 中 --onto
标志用法的第二个示例中的那些非常相似:
Another example of
--onto
option is to rebase part of a branch. If we have the following situation:H---I---J topicB / E---F---G topicA / A---B---C---D master
then the command
git rebase --onto master topicA topicB
would result in:
H'--I'--J' topicB / | E---F---G topicA |/ A---B---C---D master
该示例表明您将在 运行
之前到达所需的情况git rebase --onto master branch1 branch2
但是,您还写道,当您的回购看起来像您的第二个 ASCII 图时,您已经将 branch2
推送到某个远程。您是否与其他人共享有问题的遥控器?在那种情况下,在变基之前三思(或三次!),因为它是历史重写的一种形式,you should never rewrite history has been shared.