2017-03-07 14 views
0

假设我有以下情形父母重新装修后,是否有办法重新设定子分支?

 1->2->3 (continued-work) 
    /   
    X->Y   (feature-branch) 
/
A->B->C->D  (master) 
  • “功能分支”是目前出来CR和我解决反馈
  • “继续工作”就是工作我建立之上“功能分支“,但我想保持作为一组离散的工作。

我在继续工作和功能分支之间跳来跳去,因为我在处理代码审查反馈和构建该工作之间交替。在功能分支工作签订后关上,我想挤进这些分解成一个承诺(“Z”),重订关老爷的和合并,所以主貌似

A->B->C->D->Z  (master) 

但这样做会使继续 - 在糟糕的地方工作,因为我已经与其祖先搞砸了,并且进行任何合并或重组,导致各种合并冲突。是否有一个“正确”的方式,从我的出发情况得到

   1->2->3 (continued-work) 
      /
A->B->C->D->Z   (master) 

回答

1

git rebase --onto是你的答案。

当你挤压你的提交时,在不同的分支进行。

  1. git checkout feature-branch
  2. git checkout -b squashed-feat
  3. git rebase <sha A> -i

然后变基,关于主

  1. git rebase master
的顶

,将让你给你第二次最后一个步骤如上定义:

A->B->C->D->Z  (master) 

那我就重订,最后提交下列要求:

git rebase --onto master feature-branch continued-work

,我们做的第一挤压底垫在不同的分支仍然有很好的分支参考feature-branch。否则,我们仍然可以这样做,但只需引用特征分支的sha-id而不是分支名称feature-branch

+1

*其中特征分支是* - 可以引用为“feature-branch @ { 1}' – mkrieger1

+0

听起来很合理,谢谢!下次我陷入这种情况时,我会给出一个解决方案。 –

+0

@ mkrieger1,真棒!我总是忘记reflog样式引用! – g19fanatic

相关问题