我已经分支了错误的分支,我想将提交移动到主服务器而不是功能分支。尝试使用feat2的rebase master,但我得到“当前的分支...是最新的”
基本上我想离开这个
feat2 F
/
feat1 C - D - E
/
master A - B
对此
feat1 C - D - E
/
master A - B
\
feat2 F
当然F不依赖于任何C-D-E
编辑:强制rebase显示不仅在feat2上考虑了F,而且来自master的所有提交都被重新命名(C-D-E-F)。我需要的是一种告诉rebase在feat1“切割”的方法。
尝试使用git rebase --onto
:
git checkout feat2
git rebase --onto E B
这表示在提交F
之上修改其父级为E
的提交B
。这让feat2
看起来像你想要的那样,F
直接坐在B
的顶部。
处理这个的另一个简单方法是从feat2new
分支一个新的特征2分支master
,然后樱桃挑选提交F
。在此之后,您可以删除旧的feat2
分支并将feat2new
重命名为feat2
:
git checkout master
git checkout -b feat2new
git cherry-pick <SHA-1 for commit F>
现在删除feat2
,并重命名:
git branch -d feat2
git branch -m feat2new feat2