12

我有以下情况:

                          K---L new-feature
                         /
                H---I---J dev-team1
               /
              E---F---G dev-main
             /
A---B---C---D master

而且我只想移动dev-main分支中的新功能(K---L) 分支,而没有 (H---I---J) 形式dev-team1

                H---I---J dev-team1
               /
              E---F---G---K---L dev-main
             /
A---B---C---D master
4

2 回答 2

13

git rebase有一个--onto参数可以满足您的需要。

git checkout new-feature
git rebase --onto dev-main dev-team1

# Now new-feature has commits K' and L' after G in dev-main.
git checkout dev-main
git merge --ff-only new-feature

有关更多详细信息,请参阅“git rebase”的手册页。(我还想添加一个-i只是为了仔细检查我正在移动我认为我是的提交。)

您也可以使用git cherry-pick,尤其是在提交数量很少的情况下:

git checkout dev-main
git cherry-pick K L
于 2014-01-15T21:30:12.957 回答
1

您可以挑选 K 和 L 提交。

git checkout dev-main
git cherry-pick K

如果您有冲突,请修复它们,然后执行

git cherry-pick --continue
git cherry-pick L

修复冲突。

您还可以使用交互式变基。

git rebase -i head~5

在打开的编辑器中,将 HI 和 J 提交行替换为

pick F
pick G
于 2014-01-15T21:30:01.797 回答