所以我有一个复杂的本地分支结构:我的主要工作本地分支,以及其他两个分支。在我的分支中我想要的主人有一个新的变化。将它传播到我所有分支的最佳方法是什么?是否可以重新定位?
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
答案 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
现在来到这里是非常有趣的部分。如您所见,提交F
和F'
包含相同的更改(如果没有冲突),但F'
具有另一个父提交和另一个提交ID。我通过命名F'
来使其显而易见。
现在您可以切换到分支local_subbranch_1
并在F'
git checkout local_subbranch_1
git rebase F'
当然,您必须使用F'
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的演示存储库。您可以重播上面的步骤。