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

时间:2017-12-19 14:11:10

标签: git branch rebase

我已经分支了错误的分支,我想将提交移动到主服务器而不是功能分支。尝试使用feat2的rebase master,但我得到了#34; Current branch ...是最新的"

基本上我想从这个

开始
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 to" cut"在feat1。

1 个答案:

答案 0 :(得分: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