使用还原提交将功能分支重新定位到另一个功能分支

时间:2019-08-09 12:42:34

标签: git rebase

我的问题类似于Rebase feature branch onto another feature branch

在使用功能时,我们错误地在“功能1”分支Commit C中进行了提交,该提交被还原并为子功能创建了一个分支,而樱桃选择了该提交。

A - B - C - C"(Revert C) - D    -- Feature-1
     \ 
      C'(Cherry Pick C) - E - F - G   -- Branch-1

现在,功能1合并了一些错误修复程序,这些都是我的分支通过测试所必需的。因此,我想重新设置分支1的外观,使它看起来像

A - B - C - C"(Revert C) - D    -- Feature-1
                            \ 
                             C'(Cherry Pick C) - E - F - G   -- Branch-1

我尝试对使用(On Branch-1)$ git rebase Feature-1的数据库进行重新设置,但这没有选择提交C',因为它发现分支中已经存在该提交。
我应该如何进行变基?

1 个答案:

答案 0 :(得分:1)

如果您要使提交保持相同的顺序,可以checkout提交Dcherry-pick提交C,然后跳回到Branch-1rebase在新的cherry-picked提交C之上。也许有一种更有效的方法,但这是一种方法

  1. git checkout <hash of D>
  2. git cherry-pick <hash of C>
  3. git checkout Branch-1
  4. git rebase <hash of newly cherry-picked C>

步骤24之间的过渡树看起来像这样。

                             C'''(Cherry Pick C) (rebase on this)
                            /
A - B - C - C"(Revert C) - D    -- Feature-1
                            \ 
                             C'(Cherry Pick C) - E - F - G   -- Branch-1

如果更容易考虑,您也可以创建临时分支而不是使用哈希。