繁体   English   中英

我从创建 branchA 的地方有一个 branchZ,从那个 branchA 我创建了一个 branchB,我可以让 branchB 来自 branchZ 吗?

[英]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 ,然后挑选提交fg 例如:

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~1f的父级,在本例中是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM