父母被重新定位后,有没有办法重新绑定子分支?

时间:2017-03-07 19:19:38

标签: git

假设我有以下情况

       1->2->3 (continued-work)
      /           
  X->Y         (feature-branch)
 /
A->B->C->D     (master)
  • "特征分支"目前正在退出CR,我正在处理反馈
  • "续工作"是我在"功能分支"之上的工作。但我想保留一套独立的工作。

我在继续工作和功能分支之间来回跳跃,因为我在处理代码审查反馈和建立在该工作之间交替。在功能分支的工作签署后,我想将它们压缩到一个提交(" Z"),关闭master并合并,所以master看起来像

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

然而这样做会让我继续在一个糟糕的地方工作,因为我已经与它的祖先搞混了,并且与它进行任何类型的合并或重组都会导致各种各样的合并冲突。有没有"权利"方式从我的开始场景到

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

1 个答案:

答案 0 :(得分:1)

git rebase --onto是你的答案。

当你压缩你的提交时,请在另一个分支中进行。

  1. git checkout feature-branch
  2. git checkout -b squashed-feat
  3. git rebase <sha A> -i
  4. 然后在主人

    之上重新定位
    1. git rebase master
    2. 这将使你成为上面定义的第二步:

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

      然后我会用以下内容重新提交最后一次提交:

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

      我们在另一个分支中执行第一个压缩的rebase,仍然具有对feature-branch的良好分支引用。否则,我们仍然可以这样做但只引用功能分支所在的sha-id而不是分支名称feature-branch