git 变基到不同的分支
git rebase to a different branch
我有以下情况:
Master ---X---X---X
\
Alpha branch A1---A2---A3---A4---A5---A6
\ \
\ beta branch B1---B2
\
My Branch M1---M2---M3
我想将我的分支移动到 "B2",结果是这样的:
Master ---X---X---X
\
Alpha branch A1---A2---A3---A4---A5---A6
\
beta branch B1---B2
\
My Branch M1---M2---M3
为此,我应该在我的分支中创建一个 git rebase beta
还是应该像这样添加选项 --onto:git rebase --onto beta alpha My
?我已经阅读了文档,但我仍然没有弄清楚其中的区别...
这里有四种方法:
git rebase <branch>
将签出的分支重置为 ,应用差异(之间
以前的 HEAD 和共同祖先)并提交。
git checkout my
git rebase beta
git rebase <branch1> <branch2>
将 重置为 ,应用差异(之前的 和共同祖先之间)并提交。
git rebase beta my
git rebase --onto <branch1> <branch2>
将检出分支重置为 ,应用差异(之前的 HEAD 和 之间)并提交。
git checkout my
git rebase --onto beta A2
git rebase --onto <branch1> <branch2> <branch3>
将 重置为 ,应用差异(之前的 HEAD 和 之间)并提交。
git rebase --onto beta A2 my
如果您在分支的顶部,只需说 git rebase beta
或 git rebase B2
即可。不同之处在于,通过使用 --onto 你可以控制更多棘手的情况..... 就像相反:想要将 beta 分支移动到我的分支之上。如果你在测试版之上并且 运行 git rebase my-branch
你最终会得到 M1--M2--M3--A3'--A4'--A5'--B1'--B2' (因为从分支分歧点 (A2) 修订版 A3 到 A5(包括两者)也必须包含在一个简单的 rebase 中。在这种情况下,你必须 运行: git rebase --onto my-branch alpha-branch beta-branch
。希望能解决问题
我有以下情况:
Master ---X---X---X
\
Alpha branch A1---A2---A3---A4---A5---A6
\ \
\ beta branch B1---B2
\
My Branch M1---M2---M3
我想将我的分支移动到 "B2",结果是这样的:
Master ---X---X---X
\
Alpha branch A1---A2---A3---A4---A5---A6
\
beta branch B1---B2
\
My Branch M1---M2---M3
为此,我应该在我的分支中创建一个 git rebase beta
还是应该像这样添加选项 --onto:git rebase --onto beta alpha My
?我已经阅读了文档,但我仍然没有弄清楚其中的区别...
这里有四种方法:
git rebase <branch>
将签出的分支重置为
,应用差异(之间 以前的 HEAD 和共同祖先)并提交。 git checkout my git rebase beta
git rebase <branch1> <branch2>
将
重置为 ,应用差异(之前的 和共同祖先之间)并提交。 git rebase beta my
git rebase --onto <branch1> <branch2>
将检出分支重置为
,应用差异(之前的 HEAD 和 之间)并提交。 git checkout my git rebase --onto beta A2
git rebase --onto <branch1> <branch2> <branch3>
将
重置为 ,应用差异(之前的 HEAD 和 之间)并提交。 git rebase --onto beta A2 my
如果您在分支的顶部,只需说 git rebase beta
或 git rebase B2
即可。不同之处在于,通过使用 --onto 你可以控制更多棘手的情况..... 就像相反:想要将 beta 分支移动到我的分支之上。如果你在测试版之上并且 运行 git rebase my-branch
你最终会得到 M1--M2--M3--A3'--A4'--A5'--B1'--B2' (因为从分支分歧点 (A2) 修订版 A3 到 A5(包括两者)也必须包含在一个简单的 rebase 中。在这种情况下,你必须 运行: git rebase --onto my-branch alpha-branch beta-branch
。希望能解决问题