将提交从master转移到独立分支

问题描述 投票:3回答:1

我已经分支了错误的分支,我想将提交移动到主服务器而不是功能分支。尝试使用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 branch rebase
1个回答
1
投票

尝试使用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
© www.soinside.com 2019 - 2024. All rights reserved.