Git - 掌握变革,重新分支到复杂的分支机构?

时间:2014-10-23 19:07:45

标签: git merge rebase

所以我有一个复杂的本地分支结构:我的主要工作本地分支,以及其他两个分支。在我的分支中我想要的主人有一个新的变化。将它传播到我所有分支的最佳方法是什么?是否可以重新定位?

A---E---M  master 
     \ 
      F---G---H  local_branch_main
          |\ 
          | I---J  local_subbranch_1
           \K---L  local_subbranch_2

理想情况下,我想移动所有分支以引用新的主提交(没有冲突):

A---E---M  master 
         \ 
          F---G---H  local_branch_main
              |\ 
              | I---J  local_subbranch_1
               \K---L  local_subbranch_2

1 个答案:

答案 0 :(得分:0)

你可以这样做

首先做

git checkout local_branch_main
git rebase master

如果您很幸运并且没有任何冲突,您的存储库现在将如下所示:

A---E---M  master 
    \    \ 
     \    F'---G---H  local_branch_main
      F
      |\ 
      | I---J  local_subbranch_1
       \K---L  local_subbranch_2

现在来到这里是非常有趣的部分。如您所见,提交FF'包含相同的更改(如果没有冲突),但F'具有另一个父提交和另一个提交ID。我通过命名F'来使其显而易见。

现在您可以切换到分支local_subbranch_1并在F'

上重新绑定它
git checkout local_subbranch_1
git rebase F'

当然,您必须使用F'

的提交ID替换F'

现在您的存储库看起来像这样

   A---E---M  master 
       \    \ 
        \    F'---G---H  local_branch_main
        F     \ 
         \     I---J  local_subbranch_1
          \
           K---L  local_subbranch_2

最后,您可以结帐local_subbranch_2并在F'上对其进行重新定位,您的存储库将如下所示

   A---E---M  master 
            \ 
             F'---G---H  local_branch_main
             |\ 
             | I---J  local_subbranch_1
             \
               K---L  local_subbranch_2

我创建了一个可以下载here的演示存储库。您可以重播上面的步骤。