如何将功能分支从主题分支变基到开发分支?

How to rebase feature branch from theme branch to development branch?

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

现在,我从主题分支开始功能分支,但我应该从开发开始。我怎样才能改变它?

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 变基到开发分支?

我知道我可以签出开发分支并挑选每个提交,但这会创建一个包含新元数据的新提交。我想保留提交创建日期和作者!

你可以做一个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 都会改变元数据。