如何将主题分支的功能分支重新定义为开发分支?

时间:2016-07-29 07:48:56

标签: git version-control rebase git-rebase

我们有开发分支,从中出现功能分支。一些功能足够大,它们成为主题分支。然后这些主题分支有更多的子分支被合并到主题分支中,在完成所有主题之后,它将合并到开发中。

现在,我从主题分支开始了功能分支,但我应该从开发开始。我该如何改变这个?

development
A--B--C--D--E--F--G
       \
topic   T1----------T2--T3--T4--T5
         \         /          \
          U1--U2--U3           W1--W2--W3
         sub-feature U         feature W`

功能W应该从开发分支开始。

有没有办法在不触及主题分支T的情况下将W1,W2和W3提交到开发分支?

我知道我可以签出开发分支并挑选每个提交,但这会创建一个带有新元数据的新提交。我想保持提交创建日期,也许是作者!

1 个答案:

答案 0 :(得分:3)

您可以制作rebase --onto

git rebase --committer-date-is-author-date --onto dev T4 W`

这将重播 T4之后的任何提交,直至并包括W HEAD,到dev分支。

                     W1'--W2'--W3' (W)
                    /
A--B--C--D--E--F--G (dev)
       \
topic   T1----------T2--T3--T4--T5
         \         /         
          U1--U2--U3           
         sub-feature U        

请参阅“git rebase without changing commit timestamps”,作为保持合理提交日期的解决方法 但任何rebase都会改变元数据。