[英]When I merge branchA to branchB, would the commits in branchB be updated with the ones I did previously in branchA?
[英]I have a branchZ from where I created a branchA and from that branchA I created a branchB, can I make it so branchB comes from branchZ?
我目前有这样的事情:
a -- b <-- branchZ
\
d -- e <-- branchA
\
f -- g <-- branchB
我想要这样的东西:
f -- g <-- branchB
/
a -- b <-- branchZ
\
d -- e <-- branchA
这可能吗??
有多种方法可以实现这一点。 从概念上讲,您正在硬重置branchB
以指向提交b
,然后挑选提交f
和g
。 例如:
git switch branchB
git reset --hard b
git cherry-pick f
git cherry-pick g
有一种使用cherry-pick
的更有效的方法,因为如果您的提交是连续的,您可以使用范围,在本例中就是这样。 范围的技巧是您指定的第一个提交是您希望包含的第一个提交的父提交,如下所示:
git switch branchB
git reset --hard b
git cherry-pick f~1..g
请注意, f~1
是f
的父级,在本例中是e
,也是branchA
,因此其中任何一个都可以工作。
最后,还有一个高级版本的 rebase 可能是最好的选择,因为它可以完成上述命令所做的所有事情,但都在一个命令中完成:
git rebase f~1 branchB --onto b
换句话说,获取提交f~1
无法访问的branchB
上的所有提交,然后按顺序将它们重播到提交b
上。 在这种情况下,即使不是在您开始时,您也会被签出branchB
。
请注意,分支只是指向提交的指针,使它们可以互换。 如果我们使用分支名称作为变基而不是提交,可能会更容易理解,因此等效的变基命令将是:
git rebase branchA branchB --onto branchZ
换句话说,获取 branchB 上branchB
无法访问的所有提交,并将它们一个接一个地branchZ
branchA
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.