我的问题类似于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'
,因为它发现分支中已经存在该提交。
我应该如何进行变基?
答案 0 :(得分:1)
如果您要使提交保持相同的顺序,可以checkout
提交D
,cherry-pick
提交C
,然后跳回到Branch-1
和rebase
在新的cherry-picked
提交C
之上。也许有一种更有效的方法,但这是一种方法。
git checkout <hash of D>
git cherry-pick <hash of C>
git checkout Branch-1
git rebase <hash of newly cherry-picked C>
步骤2
和4
之间的过渡树看起来像这样。
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
如果更容易考虑,您也可以创建临时分支而不是使用哈希。